package com.tij.learning1;
/**
*
* @author wenruo
* @date 2017-8-7
*
*/
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线程运行完毕,继续调用当前线程
sleeper.join();
} catch (InterruptedException e) {
System.out.println(sleeper.getName()+" has interrupted");
}
System.out.println(getName()+" completed");
}
}
class Sleeper extends Thread {
private int duration;
public Sleeper(String name,int sleeperTime){
super(name);
this.duration=sleeperTime;
start();
}
@Override
public void run(){
try {
sleep(duration);
} catch (Exception e) {
System.out.println(getName()+" has interrupted");
return;
}
System.out.println(getName()+" has awakened");
}
}
public class JoinTest extends Thread {
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.interrupt();
}
}
java编程思想笔记-并发之线程加入
最新推荐文章于 2022-11-01 23:22:39 发布