您的位置:首页 > 编程语言 > Java开发

java编程思想笔记-并发之线程加入

2017-08-07 18:57 441 查看
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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: