thread.join()方法的理解
2017-12-16 16:51
821 查看
1。问题由来(这个程序得到的结果是0)
2继续看,现在程序得到的值小于2000
3。理解如果不使用join方法,得到的i基本上是0或者 很小的数字,因为thread和thread1线程可能还没开始运行地,主线程程序就把i的值输出了,使用了join方法后,表示这个主线程愿意等待这个新加入的线程,直到它执行完。
package com.haut.thread; /** * @author shuiyu_lei * @date 2017/12/16 */ public class AccountingVol implements Runnable { static AccountingVol accountingVol = new AccountingVol(); static volatile int i = 0; public static void increase() { i++; } @Override public void run() { for (int j = 0; j < 1000; j++) { increase(); } } public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(accountingVol); Thread thread1 = new Thread(accountingVol); thread.start(); thread1.start(); System.out.println(i); } }
2继续看,现在程序得到的值小于2000
package com.haut.thread; /** * @author shuiyu_lei * @date 2017/12/16 */ public class AccountingVol implements Runnable { static AccountingVol accountingVol = new AccountingVol(); static volatile int i = 0; public static void increase() { i++; } @Override public void run() { for (int j = 0; j < 1000; j++) { increase(); } } public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(accountingVol); Thread thread1 = new Thread(accountingVol); thread.start(); thread1.start(); thread.join(); thread1.join(); System.out.println(i); } }
3。理解如果不使用join方法,得到的i基本上是0或者 很小的数字,因为thread和thread1线程可能还没开始运行地,主线程程序就把i的值输出了,使用了join方法后,表示这个主线程愿意等待这个新加入的线程,直到它执行完。
相关文章推荐
- C#中Thread类中Join方法的理解(转载)
- java基础知识回顾之java Thread类学习(十一)--join方法的理解
- C# 理解Thread.Join()方法
- Thread的join()方法理解
- Thread.join方法个人理解
- Java多线程中join方法的理解(对Thread.join讲解的很详细)
- Thread.Join()方法的理解
- Thread.Join()方法的理解
- Java的多线程:Thread类的Join()方法
- Java中的线程Thread方法之---join()
- C#中的Thread类的Join()方法
- Java多线程中join方法的理解
- java谜题--Thread.join()方法容易忽略的地方
- Java多线程中join方法的理解
- 利用Thread类的join方法实现线程同步
- Thread的start()和join()方法
- java中synchronize锁 volatile thread.join()方法的使用
- Java多线程中join方法的理解
- 关于C#中Thread.Join()的一点理解
- JAVA THREAD.JOIN方法详解