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

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

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

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

2 回答

?
米脂

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

Future future = executorService.submit(new Callable(){
    public Object call() throws Exception {
        System.out.println("Asynchronous Callable");
        return "Callable Result";
    }
});

System.out.println("future.get() = " + future.get());
  1. 异步计算的发起线程(控制线程):负责异步计算任务的分解和发起,把分解好的任务交给异步计算的work线程去执行,发起异步计算后,发起线程可以获得Futrue的集合,从而可以跟踪异步计算结果。

参考:Java并发编程 - Executor,Executors,ExecutorService, CompletionServie,Future,Callable

查看完整回答
反对 回复 2019-03-01
?
慕容3067478

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

首先调用 shutdown 或 shutdownNow,然后调用isTerminated,返回:如果有任务正在执行,则返回false。

exe.shutdown();  
        System.out.println("shutdown():启动一次顺序关闭,执行以前提交的任务,但不接受新任务。");  
        while(true){  
            if(exe.isTerminated()){  
                System.out.println("所有的子线程都结束了!");  
                break;  
            }  
            Thread.sleep(1000);    
        }  
查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 3697 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号