从ExecutorService获取当前正在运行的线程对象

时间:2016-11-28 14:38:57

标签: java executorservice

我正在使用ExecutorService(全局声明)同时运行多线程ExecutorService将花费一个小时来完成任务。 所以我需要获取当前正在运行的线程详细信息,如活动线程排队线程已完成线程

当我杀死 ExecutorService 时, ExecutorService 被杀,但线程在后台运行。因此,在杀死ExecutorService之前,我需要获取线程对象形式 ExecutorService 并使用 loop iterator 手动终止线程。

例如:

ExecutorService有5个帖子。

每个线程都由invokeall()执行。每个帖子将在一小时后结束。

但事情是我需要在15分钟内通过向服务器发送新请求或调用某种方法来停止。

这里shutdown或shutdowNow停止执行程序但不停止那5个线程。 那就是问题所在。所以我需要手动杀死这些线程。如何杀死在executor服务中手动附加的线程?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,所有线程都附加在Callable中,并且 使用 ExecutorService 调用 Callable 线程。 ExecutorService 仅包含活动,队列和已完成详细信息的值。执行后,结果将使用 Future 类获取值。

现在,如果我想在完成之前停止执行。我需要调用可调用对象并转换为线程对象并在线程不为空​​时手动停止。 因此,Callable对象也会更改为全局变量。 结束执行删除这些对象。