[置顶] java Thread Join方法学习(同步)
来源:互联网 发布:知乎 有趣 编辑:程序博客网 时间:2024/06/05 18:44
Java Thread中, join() 方法主要是让调用改方法的线程完成run方法里面的东西后,再执行join()方法后面的代码。
join方法的功能就是使异步执行的线程变成同步执行。也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这个线程一定会执行完。而使用join方法后,直到这个线程退出,程序才会往下执行。
class ThreadTesterA implements Runnable { private int counter; @Override public void run() { while (counter <= 10) { System.out.print("Counter = " + counter + " "); counter++; } System.out.println(); }} class ThreadTesterB implements Runnable { private int i; @Override public void run() { while (i <= 10) { System.out.print("i = " + i + " "); i++; } System.out.println(); }} public class ThreadTester { public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(new ThreadTesterA()); Thread t2 = new Thread(new ThreadTesterB()); t1.start(); t1.join(); // wait t1 to be finished t2.start(); t2.join(); // in this program, this may be removed }}
package mythread;public class JoinThread extends Thread{ public static int n = 0 ; public static synchronized void inc(){ n ++ ; } public void run(){ for ( int i = 0 ; i < 10 ; i ++ ) try { inc(); // n = n + 1 改成了 inc(); sleep( 3 ); // 为了使运行结果更随机,延迟3毫秒 } catch (Exception e) { } } public static void main(String[] args) throws Exception{ Thread threads[] = new Thread[ 100 ]; for ( int i = 0 ; i < threads.length; i ++ ) // 建立100个线程 threads[i] = new JoinThread(); for ( int i = 0 ; i < threads.length; i ++ ) // 运行刚才建立的100个线程 threads[i].start(); for ( int i = 0 ; i < threads.length; i ++ ) // 100个线程都执行完后继续 必须加上join方法 threads[i].join(); System.out.println( " n= " + JoinThread.n); }}
join方法的功能就是使异步执行的线程变成同步执行。也就是说,当调用线程实例的start方法后,这个方法会立即返回,如果在调用start方法后后需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这个线程一定会执行完。而使用join方法后,直到这个线程退出,程序才会往下执行。
0 0
- [置顶] java Thread Join方法学习(同步)
- Java多线程学习 (二) Thread的join()方法
- Java Thread Join方法
- Java Thread.join()方法
- java Thread join方法
- Java Thread.join方法
- java Thread的join()方法
- Java多线程(一)——Thread之join()方法
- java--java.lang.Thread.join() 方法
- Thread类的join方法学习笔记
- java中Thread类的join()方法
- java Thread方法中join()的用法
- Java中的线程Thread方法之---join()
- Java基础 thread的join方法
- java API------Thread类join()方法
- java中Thread类的join()方法
- Java中的线程Thread方法之---join()
- 浅析Java的Thread.join()方法
- eclipse 部署:Project facet Java version 1.7 is not supported
- 传统Java Web(非Spring Boot)、非Java语言项目接入Spring Cloud方案
- [置顶] Java Observer与Observable实现观察者模式
- 移动APP测试用例设计实践经验
- Lintcode17 Subsets solution 题解
- [置顶] java Thread Join方法学习(同步)
- Android设计模式-总结+索引
- [置顶] java Cookie操作总结
- [置顶] zookeeper原理学习
- Qt5中qapplication no such file or directory
- 5.3 去掉字符串中连续出现k个0的子串
- [置顶] Hadoop HDFS简介学习
- jq 智能搜索 下拉提示
- springMVC的执行流程