什么是可以运行的最大swing工作线程数

Sre*_*rem 10 java swing multithreading swingworker

可以运行的Swing Worker线程的数量是上限还是内存支持的?这也是可配置的吗?

mor*_*ort 13

A SwingWorker不是线程本身,而是将在线程中执行的任务.通常,您将使用a ExecutorService来执行SwingWorker; 此接口还允许设置线程数:

 int n = 20; // Maximum number of threads
 ExecutorService threadPool = Executors.newFixedThreadPool(n);
 SwingWorker w; //don't forget to initialize
 threadPool.submit(w);
Run Code Online (Sandbox Code Playgroud)

现在,如果您提交的SwingWorker实例数超过n个,则必须排队并等待池中的线程可用.

  • 嗯....什么?你为什么要这样做?SwingWorker有自己的默认大小为10的池,当你调用`SwingWorker#execute()`时,它会调度任务.计划这个SwingWorker在工作线程上执行.有许多工作线程可用.:https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html#execute()...这样做是为了重新发明轮.`SwingWorker`是一个创建的实用程序,所以你不必这样做.你这样做的唯一原因是,如果默认池大小为10太小,那么你将使用原始的`Runnable` (3认同)