关于java多线程中join的使用

2014-11-24 02:33:27 · 作者: · 浏览: 0

关于java多线程中join的使用:见下面的两个简单线程类
1、沉睡者类
package com.demo;
public class Sleeper extends Thread {
private int duration;
public Sleeper(int duration,String name){
super(name);
this.duration = duration;
start();
}
public void run(){

try {
sleep(duration);
} catch (InterruptedException e) {
System.out.println(getName()+" is interupted.");
return;
}
System.out.println(getName() +"has wakened");

}

/**
* @param args
*/
public static void main(String[] args) {
Sleeper sleeper1 = new Sleeper(1500,"sleeper1");
Sleeper sleeper2 = new Sleeper(1500,"sleeper2");
Joiner joiner1 = new Joiner(sleeper1,"joiner1");
Joiner joiner2 = new Joiner(sleeper2,"joiner2");
sleeper1.interrupt();
}
}


2、加入者类
class Joiner extends Thread{
private Thread t;
public Joiner(Thread t,String name){
super(name);
this.t=t;
start();
}
public void run(){
try {

t.join();

} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(getName()+" is completed");
}
}
对代码运行结果的分析:
join的使用场景描述:当存在两个线程,A和B,当线程A在线程B上调用A.join()时,此时B线程将被挂起,直到A线程结束或者A线程调用interrupt()方法。


==========================================================
一下是这段代码的运行结果:
sleeper1 is interupted.
joiner1 is completed
sleeper2has wakened
joiner2 is completed

作者“690360459-qq-com”