Кажется, что когда я создаю экземпляр 12 потоков Swing Worker, первые шесть начинают выполнять свою задачу, она завершает И затем последние шесть запускаются и заканчиваются. Поведение, которое я ищу, состоит в том, что все 12 потоков начинают работать одновременно и заканчиваются одновременно.
У меня есть следующее:
for (int i = 0; i < 12; i++ )
{
myTask m = new Mytask(i, START);
m.execute();
}
myTask m будет увеличивать индикатор выполнения с 0 до 100 с шагом 25. Я получаю странное поведение, когда первые шесть потоков начинают увеличиваться, они заканчиваются на 100, затем последние шесть потоков начинаются с 0 и увеличиваются, и закончить.
Существует ли ограничивающий фактор для количества потоков Swing Worker, которые могут иметься?
Класс SwingWorker имеет статическое поле ExecutorService с MAX_WORKER_THREADS = 10. Я не уверен, почему вы видите 6, а не 10. Но вы не можете перейти на 10.
/**
* number of worker threads.
*/
private static final int MAX_WORKER_THREADS = 10;
...
executorService =
new ThreadPoolExecutor(1, MAX_WORKER_THREADS,
10L, TimeUnit.MINUTES,
new LinkedBlockingQueue<Runnable>(),
threadFactory);