Thread.join 源码
来源:互联网 发布:海口数据共享交换平台 编辑:程序博客网 时间:2024/05/01 03:54
在AThread的run方法里,执行了bt.join();,进入看一下它的JDK源码:
public final void join() throws InterruptedException { join(0L);}
然后进入join(0L)方法:
public final synchronized void join(long l) throws InterruptedException{ long l1 = System.currentTimeMillis(); long l2 = 0L; if(l < 0L) throw new IllegalArgumentException("timeout value is negative"); if(l == 0L) for(; isAlive(); wait(0L)); else do { if(!isAlive()) break; long l3 = l - l2; if(l3 <= 0L) break; wait(l3); l2 = System.currentTimeMillis() - l1; } while(true);}
单纯从代码上看: * 如果线程被生成了,但还未被起动,isAlive()将返回false,调用它的join()方法是没有作用的。将直接继续向下执行。 * 在AThread类中的run方法中,bt.join()是判断bt的active状态,如果bt的isActive()方法返回false,在bt.join(),这一点就不用阻塞了,可以继续向下进行了。从源码里看,wait方法中有参数,也就是不用唤醒谁,只是不再执行wait,向下继续执行而已。 * 在join()方法中,对于isAlive()和wait()方法的作用对象是个比较让人困惑的问题:
isAlive()方法的签名是:public final native boolean isAlive(),也就是说isAlive()是判断当前线程的状态,也就是bt的状态。
0 0
- Thread.join 源码
- java thread join 源码解析
- Thread线程join方法源码分析
- 深入源码剖析Thread.join实现
- Thread.Join
- Thread Join
- Thread join
- Thread.join()
- thread.join()
- Thread.join
- Thread join
- Thread Join()
- Thread.join()
- thread join
- Thread.join
- java多线程Thread join与CountDownLatch源码分析
- Thread.Join()和Thread.Sleep()
- Thread.Join()和Thread.Sleep()
- JAVA8 最新电子书集合
- codeForces 486C Palindrome Transformation
- 黑客帝国屏保图代码
- 矩阵元素相乘
- window下cmd中一些操作
- Thread.join 源码
- Java 识别图片验证码
- ARM平台移植GDB
- Android wifi连续通断测试
- UVA 3708 Graveyard(思维)
- 第五周项目4-数制转换
- 利用动态代理模式来增强方法
- Chrome自带的开发者工具进阶技巧
- 【读书笔记】《Effective Java》(9)--并发