Implementation of Join()
public class MyReader {
BufferedReader b;
public MyReader() {
b = new BufferedReader(new InputStreamReader(System.in));
}
public String readData(String msg){
String str;
try{
System.out.println(msg);
str=b.readLine();
return str;
}catch(Exception e){System.out.println(e);}
return null;
}
}
public class NameThread extends Thread{
final MyReader r;
public NameThread(MyReader reader){
r=reader;
}
@Override
public void run(){
synchronized(r){
String name=r.readData("Enter name");
System.out.println("Hello,"+name);
}
}
}
public class MailThread extends Thread{
final MyReader r;
public MailThread(MyReader reader){
r=reader;
}
@Override
public void run(){
synchronized(r){
String mailId=r.readData("Enter mailId");
System.out.println("your EmailId "+mailId);
}
}
}
public class ReaderTest {
public static void main(String as[]) throws Exception{
MyReader m = new MyReader();
NameThread nt = new NameThread(m);
MailThread mt = new MailThread(m);
nt.start(); // NameThread is started(call made for run method of Name thread by jvm)
mt.start(); //MailThread is started(call made for run method of Mail thread by jvm)
mt.join();//suspend current thread(main thread) till mailThread not complete
nt.join();//suspend current thread(main thread) till NameThread not complete
System.out.println("Execution from main start...!");
}
}
That means join used to start a thread (mt, nt) and again calling join(mt, nt) to stop current thread(main thread) by providing priority to currently started thread.
No comments:
Post a Comment