sws*_*aun 3 java model-view-controller swing swingworker executors
我已经看了一遍这个答案,但似乎无法找到它,所以如果这是一个愚蠢的问题,请道歉.请温柔.
我正在编写一个简单的MVC框架,我对此感到困惑SwingWorker以及如何使用它ExecutorService.
我想限制ExecutorService允许我使用的线程数Executors.newFixedThreadPool(n).
我理解使用SwingWorker的重要性,因为它有执行冗长任务的方法(doInBackground...等),并允许通过事件调度线程更改GUI.
但是,创建Executors.newFixedThreadPool(n)限制了线程的数量,n而SwingWorker似乎有某种私有内部常量设置的10个线程的限制MAX_WORKER_THREADS.
我想知道的是我咆哮错误的树试图结合这两个类来限制线程的数量,因为暗示似乎是如果我向一个SwingWorker任务提交一个任务Executor,那么一个任务会产生多达十个线程吗?
我最终的目标是编写一个程序,这将有一些密集的计算,我不想从一开始就犯这样的根本错误,因为这可能被证明是一个资源消耗问题,也就是说,我会有一个可爱的响应通过正确使用EDT进行GUI,但如果每个任务产生多达10个自己的线程,它将变得无法响应!
SwingWorker使用ExecutorService?ExecutorService实例,用于执行您通过SwingWorker机制提交的任务.ExecutorService是隐藏的,因为它是SwingWorker实现的一部分,你可能无法编辑它.SwingWorker实现以来Runnable,您可以将它提交给您自己的ExecutorService实例.execute()方法,那么它将被安排到它自己的方法ExecutorService.相反,您可以手动将SwingWorker实例提交给您自己的实例ExecutorService.SwingWorkerExecutor 提交任务,那么一个任务会产生多达十个线程吗?ExecutorService
文档.一个任务只使用一个线程(除非您专门编写多线程任务).ExecutorService.这几乎不占用CPU时间.ExecutorService自己调度.希望这清除了疑虑.通常使用默认实现是一个好主意(它运行得很好),但如果需要,您可以轻松地限制线程数.此外,它不会取代Swing的ExecutorService.因为它已经存在,所以最好使用它而不是创建另一个.
祝好运.
| 归档时间: |
|
| 查看次数: |
2551 次 |
| 最近记录: |