2013-02-18 7 views
-2

У меня есть бесконечный цикл для проверки сообщений в очереди:Замена бесконечного цикла

 //main class 
    boolean brun=true; 

    while(brun) 
{ 

     if(!queue.isEmpty()) //there's a new message 
     { 
     msg=queue.remove(0); //remove it from the queue 
     nqueue--; 
     //process the message 
     if(msg==0) 
     ... 
     if(msg=999) 
       brun=false; //exit 
     } 
    } 

Как я могу использовать Condition.await(), чтобы приостановить выполнение до тех пор очереди пока не пусто?

Спасибо за вашу помощь, Педро

ответ

3

Не уверен, что вы просите, но если вы хотите, чтобы получить объект из очереди и ждать, пока очередь имеет объект принять, вы можете использовать BlockingQueue ,

Если вы хотите подождать, пока в очереди не будет объекта, используйте queue.take(). Он будет зависать, пока очередь не будет иметь объект и не удалит его из очереди.

+0

Спасибо baraky, за то, что указали меня в правильном направлении. – Pedro

+0

Рад, что я мог помочь :) – BobTheBuilder

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