Java多线程中join方法的实现
来源:互联网 发布:学美工一定要会摄影吗 编辑:程序博客网 时间:2024/05/19 03:29
方法join的作用是使所属的线程对象t正常执行run()方法中的任务,而使当前线程z进行阻塞,等待t销毁后再继续执行z后面的代码。
下面贴出join方法的源码:
public final synchronized void join(long millis) throws InterruptedException { long base = System.currentTimeMillis(); long now = 0; if (millis < 0) { throw new IllegalArgumentException("timeout value is negative"); } if (millis == 0) { while (isAlive()) { wait(0); } } else { while (isAlive()) { long delay = millis - now; if (delay <= 0) { break; } wait(delay); now = System.currentTimeMillis() - base; } } }
方法join()即调用join(0)。当millis为0时,会不停地判断线程t是否isAlive(),因此,未启动的线程和已经销毁的线程是不会阻塞当前线程的。
当所属线程t正在运行,在主线程z的cpu时段,会调用Object的wait()方法,该方法首先会取得线程t的锁,然后一直阻塞等待,直到被唤醒,然后继续判断isAlive()。当线程t运行完毕,主线程z获得t的锁,然后跳出while()循环,join方法结束。
这里需要明白的是,主线程z是怎么被唤醒的。当Thread对象执行start方法完成后,会产生一次thread.notifyAll()方法,此时主线程z被唤醒。
当线程z在调用t.join方法时,遇到了interrupt()方法,则会停止阻塞,抛出InterruptException异常。
阅读全文
0 0
- Java多线程中join方法的实现
- Java多线程中join方法的理解
- Java多线程中join方法的测试
- Java多线程中join方法的理解
- Java多线程中join方法的理解
- Java多线程中join方法的理解
- java多线程中join方法的理解
- Java多线程中join方法的理解
- Java多线程中join方法的理解
- Java多线程中join方法的作用
- Java多线程中join方法的理解
- Java多线程中join方法的理解
- Java多线程中join方法的理解
- Java多线程中join方法的理解
- Java多线程中join方法的理解
- Java多线程中join方法的理解
- Java多线程中join方法的理解
- Java多线程中join方法的理解
- Map集合的几种遍历方式
- Android四大基本组件介绍与生命周期
- CMD文件、文件夹操作
- SpringBoot集成jdbcTemplate
- greendao数据的使用,简单形
- Java多线程中join方法的实现
- AngularJS通过post方法下载excel文件
- button 标记点击刷新页面的问题
- 去除inline-block元素间间距的N种方法-张鑫旭
- scala初学1之基础篇
- 针对某游戏保护DebugPort清零的一次逆向
- 扩展VLAN特性与管理——2
- C++中的友元类及友元类的应用场景
- UItableView 去掉多余的分割线