0
点赞
收藏
分享

微信扫一扫

Java的join()方法


join()方法可以让原来并列执行的线程,顺序执行,比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。

如果对A线程使用interrupt()方法,则join()方法的低啊用可以被中断。

class Sleeper extends Thread{
private int duration;
public Sleeper(String name,int sleepTime){
super(name);
duration=sleepTime;
start();
}

@Override
public void run() {
try {
TimeUnit.MILLISECONDS.sleep(duration);
} catch (InterruptedException e) {
System.out.println(getName()+" was interrupted."+
"isInterrupted(): "+isInterrupted());
return;
}
System.out.println(getName()+" has awakened");
}
}
class Joiner extends Thread{
private Sleeper sleeper;
public Joiner(String name,Sleeper sleeper){
super(name);
this.sleeper=sleeper;
start();
}

@Override
public void run() {
try {
sleeper.join();
} catch (InterruptedException e) {
System.out.println("Interrupted");
}
System.out.println(getName()+" join completed");
}
}
public class Joining {
public static void main(String[] args){
Sleeper sleeper =new Sleeper("Sleepy",1500),
grumpy=new Sleeper("Grumpy",1500);
Joiner dopey=new Joiner("Dopey",sleeper),
doc=new Joiner("Doc",grumpy);
grumpy.interrupt();
}
}

结果:

Grumpy was interrupted.isInterrupted(): false
Doc join completed
Sleepy has awakened
Dopey join completed

举报

相关推荐

0 条评论