为了账号安全,请及时绑定邮箱和手机立即绑定

如何判断线程池ExecutorService是否有任务正在执行

如何判断线程池ExecutorService是否有任务正在执行

莫回无 2019-05-24 11:23:11
判断一个线程是否已经执行可以使用.isAlive()方法判断,那判断线程池executorService里面是否有正在执行的任务该怎么办呢,请前辈指教,网上没有查到
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

Futurefuture=executorService.submit(newCallable(){
publicObjectcall()throwsException{
System.out.println("AsynchronousCallable");
return"CallableResult";
}
});
System.out.println("future.get()="+future.get());
异步计算的发起线程(控制线程):负责异步计算任务的分解和发起,把分解好的任务交给异步计算的work线程去执行,发起异步计算后,发起线程可以获得Futrue的集合,从而可以跟踪异步计算结果。
参考:Java并发编程-Executor,Executors,ExecutorService,CompletionServie,Future,Callable
                            
查看完整回答
反对 回复 2019-05-24
?
智慧大石

TA贡献1946条经验 获得超3个赞

首先调用shutdown或shutdownNow,然后调用isTerminated,返回:如果有任务正在执行,则返回false。
exe.shutdown();
System.out.println("shutdown():启动一次顺序关闭,执行以前提交的任务,但不接受新任务。");
while(true){
if(exe.isTerminated()){
System.out.println("所有的子线程都结束了!");
break;
}
Thread.sleep(1000);
}
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 447 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信