java中join实现让主线程等待所有子线程执行完在继续往下执行

阅读: 评论:0

java中join实现让主线程等待所有子线程执行完在继续往下执行

java中join实现让主线程等待所有子线程执行完在继续往下执行

一、join方法介绍

        java里面如果一个主线程中启动了多个子线程,那么我们如何保证所有子线程一定在主线程结束之前全部执行完成呢,答案就是使用子线程的join()方法,join方法可以让主线程等待子线程执行完成再结束。

二、实例

1、首先注释掉代码中子线程调用join()方法的代码,如下程序例子以及运行结果:

package ioctest;import java.util.ArrayList;
/*** 测试如何让主线程等待子线程执行完成 .* @author 小柱 .**/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class test {public static void main(String[] args) {// 主线程里面调用testConcurrent()方法System.out.println(testConcurrent());}/*** 测试线程 .* @return .*/public static String testConcurrent() {// 定义两个List集合,分别使用一下两个线程对该两个集合添加元素final ArrayList lis1 = new ArrayList();final ArrayList lis2 = new ArrayList();// 线程1Thread t1 = new Thread(new Runnable() {public void run() {for (int count = 0; count < 10; count++) {try {// 线程每次向集合添加元素之前都休眠一秒,让子线程执行的更慢一些,使结果更加明显Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}// 使用线程1向lis1集合添加0到9lis1.add(count);}}});// 启动线程1t1.start();// 线程2Thread t2 = new Thread(new Runnable() {public void run() {for (int count = 0; count < 10; count++) {try {// 线程每次向集合添加元素之前都休眠一秒,让子线程执行的更慢一些,使结果更加明显Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}// 使用线程1向lis1集合添加0到9lis2.add(count);}}});// 启动线程2t2.start();/*try {// 调用两子线程的join()方法,让主线程等待它俩执行完再让主线程执行t1.join();t2.join();} catch (InterruptedException e) {e.printStackTrace();}*/System.out.String() + "------" + String());// 返回两个集合的值   通过两个集合的值来判断两个线程是否在主线程之前执行完成String() + "------" + String();}}

运行结果:

[]------[]
[]------[]

2、放开注释掉的子线程调用join()方法的代码,运行结果如下:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]------[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]------[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
三、总结

        java程序中在主线程中如果有多个子线程,为了保证在主线程结束之前所有子线程都执行完成,那么我们需要调用每一个子线程的join()方法,这样才可以保证在主线程执行完成之前,所有子线程都执行完成。

本文发布于:2024-02-13 09:35:44,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1715437569252284.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:往下   线程   主线   java   join
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23