目录

hymn

忽有故人心头过,回首山河已是秋。

多线程--阻塞方法与中断方法

线程阻塞时,他通常被挂起,处于某种阻塞状态(BLOCKED , WAITING , TIMED_WAITING)

BlockingQueue 的put 和 take方法会抛出InterruptedException 和 Thread.sleep一样。当一个方法抛出InterruptedExceprion 时表示该方法时一个阻塞方法。

处理InterruptedException

  1. 传递给调用者
  2. 恢复中断,当代码是Runnable 的一部分时(implement Runnable),必须捕获异常
public class TaskRun implement Runnable{
	BlockingQueue<Task> queue;
	...
	public void run(){
		try{
			queue.take();
		}catch(InterruptedExcetion e){
			Thread.currentThread().innterrupt();// 恢复被中断的状态
		}
	}
}

标题:多线程--阻塞方法与中断方法
作者:hymn
地址:https://dxyhymn.com/articles/2020/05/28/1590634925753.html