Mr Assistance Mr Assistance - 2 months ago 15
Java Question

threads runnable vs extends thread

I have the following code, and i am experimenting with synchronization.
I have used one thread creation using extend thread t2. And I am also creating one thread via runnable. However i cant seem to get the runnable thread working.

What is wrong? I havent practiced java for a good 6 months so getting back into the swing of things.

package threadingchapter4;

class Table {

void printTable(int n) {
synchronized (this) {// synchronized block
for (int i = 1; i <= 5; i++) {
System.out.println(n * i + " "
+ Thread.currentThread().getName() + " ("
+ Thread.currentThread().getId());
try {
Thread.sleep(400);
} catch (Exception e) {
System.out.println(e);
}
}
}
}// end of the method
}

class t1 implements Runnable {
Table t;

t1(Table t) {
this.t = t;
}

public void run() {
t.printTable(5);
}

}

class MyThread2 extends Thread {
Table t;

MyThread2(Table t) {
this.t = t;
}

public void run() {
t.printTable(100);
}
}

public class TestSynchronizedBlock1 {
public static void main(String args[]){
Table obj = new Table();//only one object
Thread t1 = new Thread(obj);
MyThread2 t2=new MyThread2(obj);
t1.start();
t2.start();
}
}

Answer

I think you've confused yourself with your naming conventions. I assume you were trying to do this:

public static void main(String args[]){  
    Table obj = new Table();//only one object  
    Thread thread1 = new Thread(new t1(obj));  // t1 is the Runnable class
    MyThread2 thread2 = new MyThread2(obj);  
    thread1.start();
    thread2.start();  
}