блокировка потоков в фиксированном пуле потоков - PullRequest
6 голосов
/ 18 ноября 2011

У меня есть два сомнения:

  1. Относительно фиксированного пула потоков в Java. Предположим, я создал фиксированный пул потоков с 5 потоками, и все потоки выполняются в данный момент, а также предположим, что в очереди ожидают 4 задачи, чтобы завершить выполнение этих потоков. Если все выполняемые в настоящий момент задачи заблокированы, что произойдет? Есть ли способ взять задачу из той очереди и поставить заблокированную задачу в очередь?

  2. Как мы узнаем, заблокировано или выполняется задание?

1 Ответ

3 голосов
/ 29 января 2012

Если все выполняемые в настоящий момент задачи заблокированы, что произойдет? Есть ли способ взять задачу из той очереди и поставить заблокированную задачу в очередь?

Нет, для этого нет возможности. Если задача начинает выполняться и блокируется, то блокирует этот поток до тех пор, пока он не завершится нормально или не прервется из-за отключения пула потоков.

Как мы узнаем, заблокировано или выполняется задание?

Если вам нужно это знать, то вам нужно приложить некоторые знания к самому коду задачи, которые затем могут быть запрошены какой-то другой частью вашего приложения. Очевидно, что что-то еще нужно будет удерживать ссылкой на задачу, чтобы это сработало, прежде чем передавать ее исполнителю.

...