我已经到处寻找这个答案,但似乎找不到它,如果这是一个愚蠢的问题,我深表歉意。请温柔一点。
我正在编写一个简单的 MVC 框架,并且SwingWorker
对它如何与ExecutorService
.
我想限制 ExecutorService 允许我使用的线程数Executors.newFixedThreadPool(n)
。
我理解使用 SwingWorker 的重要性,因为它具有执行冗长任务(doInBackground
...等)的方法,并允许通过事件调度线程更改 GUI。
但是,创建Executors.newFixedThreadPool(n)
将线程数限制为n
而SwingWorker
似乎有由某种私有内部常量设置的 10 个线程的限制MAX_WORKER_THREADS
。
我想知道我是不是在尝试将这两个类组合起来以限制线程数时出现错误的树,因为这意味着如果我向SwingWorker
an 提交任务,Executor
那么该任务会产生多达 10 个线程吗?
我的最终目标是编写一个具有一些密集计算的程序,并且我不想从一开始就犯这样的基本错误,因为这可能会被证明是资源消耗问题,也就是说,我将有一个可爱的响应通过正确使用 EDT 的 GUI,但是如果每个任务都产生多达 10 个自己的线程,它将变得无响应!