Java Spring ThreadPoolExecutorFactoryBean - PullRequest
       5

Java Spring ThreadPoolExecutorFactoryBean

0 голосов
/ 12 августа 2011

Если я сконфигурирую ThreadPoolExecutorFactoryBean с maxPoolSize = 1 - таким образом, исполнитель всегда имеет 1 поток - если я запускаю 2 или более потоков - весной создадим какую-нибудь очередь или следующий вызов будет ждать предыдущего?Спасибо.

1 Ответ

2 голосов
/ 12 августа 2011

Если maxPoolSize равен 1, тогда одновременно будет работать только один поток, поэтому одновременно будет выполняться только одна задача.Однако ThreadPoolExecutor имеет очередь, поэтому любые задачи, которые не выполняются немедленно, будут выполняться асинхронно, когда поток станет доступным.

Поэтому, когда у вас есть ThreadPoolExecutor с maxPoolSize 1, следующеекод немедленно вернется

executor.execute(runnable1);
executor.execute(runnable2);

, и runnable1 будет выполняться в потоке первым, после того как будет завершено выполнение runnable2.

...