阻塞与中断

在线程与阻塞队列协同工作的时候

volatile stop=false;

while(!stop)

{

try{

   queue.put(..);

}

catch(...){}

}

上述代码可能不能正常工作,原因是如果阻塞队列满的时候可能程序阻塞在put方法上,而不能发现应该停止线程。

更好的方法是

while(!Thread.currentThread().isInterrupted())

{

try{

queue.put(....);

}

catch(){

interrupt();//...在这里允许线程退出

}

}

原文地址:https://www.cnblogs.com/macula7/p/1960465.html