我正在尝试使用 Executor 执行 SwingWorker。当我执行/提交这些线程池大小为 1 的任务时,这些任务会完美执行。
但是,当我使用大于 1 的线程池大小执行任务时,我得到了 ExecutionException 封装了我所看到的 NullPointerException 和 OutOfBoundsException。当任务连续运行时,不会发生这些异常。
所有任务共享一个通用配置文件 - 我现在更改了它,以便它们使用自己的配置文件。我希望这将消除因线程不安全而绊倒的一个区域。
不幸的是,我无法访问异步调用的库的源代码。
我真的有两个问题:
1)。SwingWorker 线程是否共享资源?我假设他们会这样做,并且我的问题是由于我调用的库中缺乏线程安全性,例如单例。
2)。任何人都可以进一步评论将 SwingWorker 与 ExecutorService 一起使用的适用性吗?你有什么恐怖故事吗?我使用 SwingWorker 的原因是所有这些都位于 GUI 下,我希望将来能够显示进度更新。这就是阻止我只使用番石榴的 ListenableFuture 的原因,但如果有人对进度更新有一个好的解决方案,我会接受它。
谢谢