Потоки Swing Worker не совпадают

Кажется, что когда я создаю экземпляр 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, которые могут иметься?

6
задан Carlo del Mundo 27 August 2010 в 18:43
поделиться

1 ответ

Класс 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);
2
ответ дан 8 December 2019 в 20:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: