/**
* 1.线程池执行不同的业务逻辑.
* 2.获取每个任务执行的结果
* 3.最后的结果会用到之前的结果
*/
public class SearchUserListDTO {
public static void main(String[] args) throws InterruptedException {
ExecutorService executorService = Executors.newFixedThreadPool(3);
CountDownLatch countDownLatch = new CountDownLatch(3); //线程计数器,就是线程的个数
try {
executorService.execute(new Runnable() {
//不是异步的没有返回值
@Override
public void run() {
try {
Thread.sleep(1000L);
countDownLatch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("111");
}
});
//一个线程池,三个线程,执行三个任务,只有当这三个任务执行完以后,主线程才会执行
executorService.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000L);
countDownLatch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("222");
}
});
executorService.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000L);
countDownLatch.countDown();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("333");
}
});
//主线程阻塞,如果线程池之间也是需要前后结果的话,应该也是阻塞的
countDownLatch.await(); //只有当countDown变为0的时候,主线程才不是阻塞的
} finally {
executorService.shutdown();
}
}
最后
以上就是过时自行车最近收集整理的关于多线程-线程池执行多业务逻辑的全部内容,更多相关多线程-线程池执行多业务逻辑内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复