完成后我是否需要收集swingWorker线程?

时间:2017-08-04 16:00:36

标签: java multithreading swing swingworker

我正在使用GUI来调用swing工作线程。

完成并执行方法done()后,我正在打印Thread.activeCount()。我得到一个数字,表示线程仍处于活动状态。

完成后我是否需要以某种方式收集它们?

1 个答案:

答案 0 :(得分:2)

您无法手动销毁SwingWorker实例创建的线程。这些线程在ThreadPoolExecutor中运行,但未公开。

public final void execute() {
    getWorkersExecutorService().execute(this);
}

private static synchronized ExecutorService getWorkersExecutorService()

你必须等待超时。生成的每个线程都有10分钟的超时时间。

executorService = new ThreadPoolExecutor(MAX_WORKER_THREADS, MAX_WORKER_THREADS, 10L, TimeUnit.MINUTES, new LinkedBlockingQueue<Runnable>(), threadFactory);

这些线程是守护进程,因此如果程序是程序中的最后一个线程,程序仍会关闭。