理解高并发(11).线程通信之_join使用及原理
来源:互联网 发布:ubuntu怎么删除目录 编辑:程序博客网 时间:2024/06/08 06:53
概述
根据jdk官方API的定义:
Thread.join方法是阻塞调用线程(也称阻塞主线程),待被调用线程(子线程)运行结束后主线程才会被唤醒。 通常用在main方法中。
替代方案
jdk1.7 CountDownLatch
join底层实现原理
wait、notify机制,可以深入的查看底层实现源码:
/** 2 * Waits at most <code>millis</code> milliseconds for this thread to3* die. A timeout of <code>0</code> means to wait forever.4*/ 5//此处A timeout of 0 means to wait forever 字面意思是永远等待,其实是等到t结束后。 6 publicfinalsynchronizedvoid join(long millis) throws InterruptedException { 7 long base = System.currentTimeMillis(); 8 long now = 0; 9 10if (millis < 0) {11thrownew IllegalArgumentException("timeout value is negative");12 }1314if (millis == 0) {15while (isAlive()) {16 wait(0);17 }18 } else {19while (isAlive()) {20long delay = millis - now;21if (delay <= 0) {22break;23 }24 wait(delay);25 now = System.currentTimeMillis() - base;26 }27 }28 }
阅读全文
0 0
- 理解高并发(11).线程通信之_join使用及原理
- 理解高并发(9).线程通信之_wait、notify
- 理解高并发(10).线程通信之_线程中断技术
- 理解高并发(5).synchronized原理及用法
- 理解高并发(15).Future、Callable实现原理及用法
- 理解高并发(17).threadlocal原理及用法
- 理解高并发(19).volatile原理及用法
- java挑战高并发 之(10):使用wait/notify/notifyAll实现线程间通信的几点重要说明
- 【多线程高并发】线程之间通信
- 并发原理及php高并发解决方案
- Java并发编程之线程池的理解与使用
- 高并发基础之线程通信wait/notify/notifyAll(四)
- Java并发学习之ThreadLocal使用及原理介绍
- 高并发服务器学习之线程类
- 高并发服务器关键技术之线程池
- java高并发-线程的基本使用
- [黑马程序员]多线程_join使用
- 高并发学习之使用Condition实现三个线程轮转&阻塞缓冲区
- ACM小白入门
- 德国创意ab
- 【Node.js-6】consolidate模板引擎集成、router路由介绍
- MUI框架Ajax获取数据然后在列表显示
- FTPrep, 24 Swap Nodes in Pairs
- 理解高并发(11).线程通信之_join使用及原理
- ios-json数据转模型
- cocos2dx mvc
- 百度之星度度熊保护村庄
- C++中的引用
- 创建型-抽象工厂模式(abstract factory)
- 制造业信息化的伴侣---Windows 2016超融合
- 理解高并发(12).限定并发个数_semaphore信号量
- Janel: Java Native 的运行器