java并发编程:join用法
2016-08-05 16:37
274 查看
join是Thread类的一个方法,启动线程后直接调用,例如:
Thread t = new AThread();
t.start();
t.join();
join()的作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。
看下面实例代码1:
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();
System.out.println(a);
}
}
很明显,输出的结果可能是5,但是也很可能不是,但若改成
public static void main(String[] args) throws Exception {
Runnable r = new JoinTest();
Thread t = new Thread(r);
t.start();
t.join(); //加入join()
System.out.println(a);
}
那么输出的结果就一定是5了。
http://uule.iteye.com/blog/1101994
http://www.open-open.com/lib/view/open1371741636171.html
Thread t = new AThread();
t.start();
t.join();
为什么要用join( )
在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了。join()的作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。
看下面实例代码1:
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();
System.out.println(a);
}
}
很明显,输出的结果可能是5,但是也很可能不是,但若改成
public static void main(String[] args) throws Exception {
Runnable r = new JoinTest();
Thread t = new Thread(r);
t.start();
t.join(); //加入join()
System.out.println(a);
}
那么输出的结果就一定是5了。
http://uule.iteye.com/blog/1101994
http://www.open-open.com/lib/view/open1371741636171.html
相关文章推荐
- java并发编程不得不知道的几件事
- Java并发编程深入研究 -- 第二部分(对象安全发布)提纲
- java并发编程--一道经典多线程题的2种解法
- java并发编程摘要和整理(转载和整理)
- java并发编程中CountDownLatch和CyclicBarrier的使用
- Java并发编程
- Java并发编程中的join()与interrupt()函数
- JAVA并发编程小结
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- Java并发编程示例(一):线程的创建和执行
- Java并发编程学习
- JAVA并发编程--守护线程(Damon Thread)
- Java并发编程
- Java并发编程中构建自定义同步工具
- Java并发编程--多线程之HelloWorld
- Java并发编程-02-线程的中断,休眠和等待线程的终止
- Java并发编程-11-线程同步辅助类-semaphore
- Java并发编程:阻塞队列
- java并发编程中CountDownLatch和CyclicBarrier的使用
- java并发编程---Java内存模型(JMM)