Note that there are some explanatory texts on larger screens.

plurals
  1. POOutput with Thread Class and Runnable interface
    primarykey
    data
    text
    <p>The two programs say both are implemented with the same logic namely, in one program, creating thread by extending Thread class and the other by implementing Runnable interface.</p> <p>Here the output will be like "Print some values till i press ENTER or RETURN key", My problem is, when i run these two programs "program where we are creating Thread by extending Thread class will by halted from extending Thread class printing values till i Press ENTER/RETURN but "program where we say both are creating Thread with Runnable interface output is getting halted"</p> <p>Here the logic is same in these two programs, only difference is one program extending Thread Class and implementing Runnable interface different.</p> <p>By Extending Thread </p> <pre><code>import java.io.IOException; class TryThread extends Thread { public TryThread(String firstName, String secondName, long delay) { this.firstName = firstName; this.secondName = secondName; aWhile = delay; setDaemon(true); } public void run() { try { while (true) { System.out.print(firstName); Thread.sleep(aWhile); System.out.print(secondName + "\n"); } } catch (InterruptedException e) { System.out.println(firstName + secondName + e); } } private String firstName; private String secondName; private long aWhile; } public class Lab1 { public static void main(String[] args) { Thread first = new TryThread("A ", "a ", 200L); Thread second = new TryThread("B ", "b ", 300L); Thread third = new TryThread("C ", "c ", 500L); System.out.println("Press Enter when you have had enough...\n"); first.start(); second.start(); third.start(); try { System.in.read(); System.out.println("Enter pressed...\n"); } catch (IOException e) { System.out.println(e); } return; } } </code></pre> <p>Output : </p> <pre><code>Press Enter when you have had enough... A B C a A b B a A c C a A b B a A b B c C a A a A b B a A c C b B a A Enter pressed... </code></pre> <p>By Implementing Runnable Interface</p> <pre><code>import java.io.IOException; class TryThread1 implements Runnable { public TryThread1(String firstName, String secondName, long delay) { this.firstName = firstName; this.secondName = secondName; aWhile = delay; } public void run() { try { while (true) { System.out.print(firstName); Thread.sleep(aWhile); System.out.print(secondName + "\n"); } } catch (InterruptedException e) { System.out.println(firstName + secondName + e); } } private String firstName; private String secondName; private long aWhile; } public class Lab2 { public static void main(String[] args) { Thread first = new Thread(new TryThread1("A ", "a ", 200L)); Thread second = new Thread(new TryThread1("B ", "b ", 300L)); Thread third = new Thread(new TryThread1("C ", "c ", 500L)); System.out.println("Press Enter when you have had enough...\n"); first.start(); second.start(); third.start(); try { System.in.read(); System.out.println("Enter pressed...\n"); } catch (IOException e) { System.out.println(e); } return; } } </code></pre> <p>Output</p> <pre><code>Press Enter when you have had enough... A B C a A b B a A c C a A b B a A b B c C a A a A b B a A c C b B a A a A b B c C a A Enter pressed... b B a A a A b B c C a A b B a A c C a A b B a A b B a A c C a A b B a A c C b B a A a A b </code></pre> <p>Please tell me difference between extending thread and implementing Runnable interface. Most of them prefer Implementing Runnable Interface. But from this output differences, I don't know which one to prefer</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload