как проверить, работает ли поток - PullRequest
1 голос
/ 12 декабря 2011

Я хочу проверить, какой поток работает / работает .. Так как 5 потоков работает / работает, то необходимо приостановить их, затем -> когда 1 будет освобожден / завершен / остановлен, следующий поток в очереди будет запущен / запущен.

Как это сделать

Ответы [ 2 ]

3 голосов
/ 12 декабря 2011

Вы можете узнать, в каком состоянии находится поток, используя метод getState (), который возвращает Enum of Thread.States. Поток может находиться только в одном из следующих состояний в данный момент времени.

NEW Свежий поток, который еще не начал выполняться.
RUNNABLE Поток, который выполняется на виртуальной машине Java.
BLOCKED Поток, который заблокирован в ожидании блокировки монитора.
WAITING Поток, ожидающий уведомления другим потоком.
TIMED_WAITING Поток, ожидающий уведомления другим потоком в течение определенного времени.
TERMINATED Поток, метод выполнения которого завершен.

Thread t = new Thread();
Thread.State e = t.getState();
Thread.State[] ts = e.values(); 
  for(int i = 0; i < ts.length; i++){
   System.out.println(ts[i]); 
  }   
2 голосов
/ 12 декабря 2011

Или вы можете использовать пул потоков, который является частью JDK, например ExecutorService .

...