线程阻塞时,他通常被挂起,处于某种阻塞状态(BLOCKED , WAITING , TIMED_WAITING)
BlockingQueue 的 put 和 take 方法会抛出 InterruptedException 和 Thread.sleep 一样。当一个方法抛出 InterruptedExceprion 时表示该方法时一个阻塞方法。
处理 InterruptedException
- 传递给调用者
- 恢复中断,当代码是 Runnable 的一部分时(implement Runnable),必须捕获异常
public class TaskRun implement Runnable{
BlockingQueue<Task> queue;
...
public void run(){
try{
queue.take();
}catch(InterruptedExcetion e){
Thread.currentThread().innterrupt();// 恢复被中断的状态
}
}
}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于