Thread.join详解

复制代码
复制代码
复制代码
/**
 * 如果某个线程在另一个线程t上调用t.join;那么此线程将被挂起,直到目标t线程的结束才恢复即t.isAlive返回为假
 * 
 * @date:2018年6月27日
 * @author:zhangfs
 * 
 * 
 */
public class ClientDemo {

    public static void main(String[] args) {
        SleepThread sleepThread1 = new SleepThread("sleepThread1", 1500),
                sleepThread2 = new SleepThread("sleepThread2", 1500);

        JoinThread joinThread1 = new JoinThread("joinThread1", sleepThread1),
                joinThread2 = new JoinThread("joinThread2", sleepThread2);

        sleepThread2.interrupt();

    }
}
复制代码
复制代码
复制代码
复制代码
复制代码
复制代码

public class SleepThread extends Thread {


private int duration;


 


public SleepThread(String name, int sleepTime) {


super(name);


this.duration = sleepTime;


start();


}


 


@Override


public void run() {


// TODO Auto-generated method stub


// super.run();


try {


sleep(duration);


} catch (InterruptedException e) {


// TODO Auto-generated catch block


// e.printStackTrace();


System.out.println(getName() + " was interrupted. is interrupted is :" + isInterrupted());


return;


}


System.out.println(getName() + " has awakened");


}


}

 

 

复制代码
复制代码
复制代码
复制代码
复制代码

public class JoinThread extends Thread {

 

private SleepThread sleepThread;

 

public JoinThread(String name, SleepThread sleepThread) {

super(name);

this.sleepThread = sleepThread;

start();

}

 

@Override

public void run() {

// TODO Auto-generated method stub

try {

sleepThread.join();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

// e.printStackTrace();

System.out.println("interrupted ");

}

System.out.println(getName() + "  Join Complete");

}

}


output:
复制代码
复制代码

sleepThread2 was interrupted. is interrupted is :false


joinThread2  Join Complete


sleepThread1 has awakened


joinThread1  Join Complete

 

 

posted @   陶朱公Boy  阅读(1105)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2017-06-27 指令重排序 as-if-serial
点击右上角即可分享
微信分享提示