多线程之join()
来源:互联网 发布:西班牙菜 知乎 编辑:程序博客网 时间:2024/05/18 14:22
package thread;public class JoinTest implements Runnable{ public static int a = 0; public void run() { for (int k = 0; k < 5; k++) { a = a + 1; } } public static void main(String[] args) throws Exception { Runnable r = new JoinTest(); Thread t = new Thread(r); t.start(); // t.join(); System.out.println(a); } }
请 问程序的输出结果是5吗?答案是:有可能。其实你很难遇到输出5的时候,通常情况下都不是5。当然这也和机器有严重的关系。为什么呢?我的解释是当主线程 main方法执行System.out.println(a);这条语句时,线程还没有真正开始运行,或许正在为它分配资源准备运行。因为为线程分配资源需要时间,而main方法执行完t.start()方法后继续往下执行System.out.println(a);,这个时候得到的结果是a还没有被 改变的值0 。怎样才能让输出结果为5!其实很简单,join() 方法提供了这种功能。join() 方法,它能够使调用该方法的线程在此之前执行完毕。
实验结果:
0
现在我们加入join()方法
package thread;public class JoinTest implements Runnable { public static int a = 0; public void run() { for (int k = 0; k < 5; k++) { a = a + 1; } } public static void main(String[] args) throws Exception { Runnable r = new JoinTest(); Thread t = new Thread(r); t.start(); t.join(); System.out.println(a); }}
实验结果如下:
5
join()能够使调用该方法的线程在此之前执行完毕。
通过上面的例子可以看出main也是一个线程并且可以先执行完毕。
0 0
- java 多线程之join
- 多线程之Join
- 多线程之Join方法
- JAVA多线程之(join)
- Java 多线程之join
- 多线程之join方法
- 多线程之join()
- java多线程之join
- 多线程之join
- java多线程之join
- java多线程之Join
- 多线程 之 join
- java多线程之join()方法
- Java多线程之Fork/Join
- java多线程之join()方法
- 08_多线程之JOIN
- Java多线程系列-- 之 join()
- 多线程之join,interrupt(三)
- 配置PhoneGap时遇到的问题及解决方法
- GitHub上传文件不能超过100M的解决办法
- 表格控件mmGrid 精简版 直接就可以用
- hihoCoder #1284 : 机会渺茫
- Android源码--listAudioPorts调用过程
- 多线程之join()
- Android 6.0 动态权限申请详解
- hdu5955Guessing the Dice Roll
- 多线程&并发(二)
- Angular 2.0项目结构基本介绍
- 二叉查找树的正确打开方式
- jQuery源码剖析(一)——概览&工具方法
- mybatis-中级篇-UserDaoTestByMapper
- laravel5.2中session的使用