java - 当 swingWorker 线程完成时,我是否需要收集它们?

标签 java multithreading swing swingworker

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

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

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

最佳答案

您无法手动销毁由 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);

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

关于java - 当 swingWorker 线程完成时,我是否需要收集它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45511153/

相关文章:

Java Swing,单击按钮,输出到 JTextArea

java - BorderLayout West Center East all 等宽

java - 语言更改时 recyclerview 中的内容不会更改

android - 在后台线程中运行主线程中的代码,同时阻塞后台线程

java - 关闭框架的最佳方法?

java - 带方形边框的 JCheckBox

java - 带有 cookie 的数字格式异常 JSP 页面

java - Spark Streaming作业如何在Kafka主题上发送数据并将其保存在Elastic中

c# - 多线程应用程序冗余

javascript - 是否可以将传输的 ArrayBuffer 返回原始类型数组?