这里的sub_thread_func是你想让子线程执行的函数,arg1和arg2是函数的参数。 步骤3:关闭线程池 当所有的子线程任务都提交完毕后,需要调用shutdown方法来关闭线程池。代码如下: # 关闭线程池executor.shutdown() 1. 2. 步骤4:主线程等待子线程执行完毕 为了确保主线程等待所有子线程执行完毕再继续执行,可以使用futu...
子线程Thread[Thread-6,5,main]执行完毕 子线程Thread[Thread-8,5,main]执行完毕 主线执行。 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 此方主线程只是睡了5秒,但是不能保证全部的子线程执行完成,所以这儿的5秒只是一个估值 2 、使用Thread的join()等待所有的子线程执行完毕,主线程在执行 实现 如下 ...
packagecom.test;publicclassJoinDemo {publicstaticvoidmain(String[] args)throwsException {//创建子线程,并启动子线程Thread subThread=newThread(newSubThread()); subThread.start();//主线程处理其他工作,让子线程异步去执行mainWork();//主线程其他工作完毕,等待子线程的结束, 调用join系列的方法即可(可以设...
简介:主线程等待子线程执行完毕再执行的几种方式 一、CountDownLatch 使用CountDownLatch可以非常方便的实现线程等待,它是一种类似倒计时的功能,当计数为0时程序继续向下运行,初始化的时候需要指定计数数量,使用如下: import java.time.LocalDateTime;import java.util.concurrent.CountDownLatch;import java.util.concurren...
就是启动多个线程后,如何让当前线程等待这些子线程执行完毕,因为需要根据所以子线程的执行结果来更新批次状态 解决方案1: 基本思路是这样: 每个SubThread子线程类实例有个自己的状态99-初始化 0-执行成功 1-执行失败,当执行完毕之后,将状态修改为0或者1 MainThread主线程类中有个List,用来登记所有子线程。子线程的...
线程执行了步骤 1 之后,收到中断线程的指令,然后就不要再执行步骤 2 了,但从上述执行结果可以看出...
可以看到,子线程还没执行完时,主线程进来了。 1.使用CountDownLatch 示例如下,我们初始化一个CountDownLatch,值为10(子线程个数),然后每次一个子线程执行完后执行一下countDown(),代码示例如下: 代码语言:javascript 复制 packagecom.java4all.mypoint;importjava.util.concurrent.CountDownLatch;importjava.util.co...
考虑子线程是一个耗时的阻塞操作,我们需要通过程序让子线程运行结束再执行主线程。这里给出如下几种解决办法 ①、t1.join() ②、while(t1.isAlive()) ③、while(Thread.activeCount()>1) ④、CountDownLatch 方法一t1.start();后面接上t1.join()
1、通过thread的join方法保证多线程的顺序执行, wait是让主线程等待 比如一个main方法里面先后运行thread1,,thread2,thread3,那么thread1.start()之后,运行thread1.join(),这是会让主线程mian等待新的线程thread1执行完了,再执行主线程mian下面的代码,thread1.join()是然主线程main wait。
子线程Thread[Thread-5,5,main]执行完毕 子线程Thread[Thread-8,5,main]执行完毕 子线程Thread[Thread-6,5,main]执行完毕 主线执行。 这种方式符合要求,它能够等待所有的子线程执行完,主线程才会执行。 3 使用 ExecutorService 线程池,等待所有任务执行完毕再执行主线程,awaitTermination。 awaitTermination(long time...