2016-01-20 3 views
2

Я использую ExecutorService как,Java - ExecutorService: Как повторно запустить "состояние ожидания" нить

ExecutorService executorService = Executors.newFixedThreadPool(5); 

for(int i = 0 ; i < 5 ; i ++){ 
    executorService.submit(new MyRunnable()); 
} 

и мой Runnable, как,

@Override 
public void run(){ 
    while(true){ 
     try{ 
      Data data = SynchronizedQueue.getData(); // Class Name is Sample... 
      if(data != null){ 
       //process with data 
      }else{ 
       Thread.sleep(1); 
      } 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
} 

Когда я нарушу от Runnable-х while- цикл, изменение состояния потока в «wait».

Q1. Может ли мой «while (true) цикл« умереть »?

Q2. Если он умеет умирать, как снова запустить?

спасибо.

ответ

0

Если вы перейдете из цикла while, ваш поток перейдет в состояние TERMINATED, так как он достигнет конца функции.

A1. Ваш цикл будет умирать

A2. Ты не можешь. Вы должны снова отправить исполняемый файл в службу-исполнитель.

+0

Нет. VisualVM сообщает мне, что состояние Thread's "wait". – bot

+0

он равен ожиданиям и прекращению? – bot

+0

Я думал, что Executor.newFixedThreadPool поддерживает Thread – bot

Смежные вопросы