Assume we have 2 threads running thread-1 & Thread-2.
If we are applying join on Thread-1, Then Thread-2 wants to wait till completion of Thread-2.
Assume Thread-1 contains some thousands of lines, but Thread-2 wants to wait till completion of 1st 10 lines..
If we use join then the Thread-2 wants to wait till completion of Thread-1.
If we use Wait and Notify then there is no need to wait till completion of Thread-1, After completion of 1st 10 lines of Thread-1 the other thread can resume.
public class JoinDrawBack {
static int sum=0;
public static void main(String a[]) throws InterruptedException {
MyThread thread_1=new MyThread();
thread_1.start(); //starting thread_1
thread_1.join(); //applying join on Thread-1
System.out.println(sum); //thread-2 printing the sum
//here thread-2 wants to wait till completion of run method,
//when we use join then there is no need to wait such a long time.
}}class MyThread extends Thread{
public void run(){
for(int i=0;i<10;i++){
JoinDrawBack.sum=JoinDrawBack.sum+i;
}
///thousands of lines
}
}