在线程与阻塞队列协同工作的时候
volatile stop=false;
while(!stop)
{
try{
queue.put(..);
}
catch(...){}
}
上述代码可能不能正常工作,原因是如果阻塞队列满的时候可能程序阻塞在put方法上,而不能发现应该停止线程。
更好的方法是
while(!Thread.currentThread().isInterrupted())
{
try{
queue.put(....);
}
catch(){
interrupt();//...在这里允许线程退出
}
}