Please have a look at the code below:
Class A
package generalscenarios;
public class A implements Runnable{
public void run(){
System.out.println("dsad");
}
}
Class B
package generalscenarios;
public class B {
public static void main(String[] args) throws InterruptedException {
A a1 = new A();
Thread a = new Thread(a1);
a.start();
System.out.println("hi");
}
}
When I execute the class B, My thread a will be started by the main thread, And hi will be printed on console by the main thread. But the order of printing “hi” and “dsad” is not determined.
I want that “hi” should be printed after “dsad”.
The solution that I thought of is to take a shared variable between main thread and thread “a”. Main thread will wait on that variable till the time thread “a” notifies him.
Class A
package generalscenarios;
public class A implements Runnable{
public void run(){
System.out.println("dsad");
synchronized (this) {
this.notify();
}
}
}
Class B
package generalscenarios;
public class B {
public static void main(String[] args) throws InterruptedException {
A a1 = new A();
Thread a = new Thread(a1);
a.start();
synchronized (a1) {
a1.wait();
}
System.out.println("hi");
}
}
Please suggest me if my thinking is valid. Please suggest any other way of achieving this.
You can try something like
Do read Thread.join() and also read the complete reference of
Thread.