线程的中断

package seven;

import common.Utils;

/**
 * 
 * 线程的阻塞
 * 引起线程阻塞的方法有 sleep() wait(),join(会造成当前线程的阻塞,而前面两个会造成调用线程的阻塞)
 *  当线程阻塞时,会进行阻塞队列,当有一个线程向阻塞线程发出中断请求时,被请求线程会在合理时刻对请求
 * 进行处理,如果被请求的线程处于阻塞状态,则其会抛出 InterruptedException ,然后执行 catch()语句块
 * 被请求线程会再次进入 runnable 队列等待 JVM的调度
 * 
 */
public class Blocking {
    static final Object lock = new Object();

    public static void main(String args[]) {
	final Thread main = Thread.currentThread();
	Thread reader = new Thread() {
	    @Override
	    public void run() {
		synchronized(lock) {
		    try {
			lock.wait();	//会使得这个线程从等待集合中被移除,
					//使得它可以在再次获得锁之后,继续执行java.lang.InterruptedException异常的处理逻辑。
					//所以并不是它中断后就执行异常里面的代码,而是其线程放入到就绪队列中,等待再次调入,然后执行异常
		    }catch(InterruptedException e) {
			System.out.println(Thread.currentThread().getName()+" 被中断");
		    }
		}
	    }
	};
	reader.start();
	System.out.println("1s latter...");
	Utils.sleep(1);
	System.out.println(Thread.currentThread().getName()+" 向  reader 发送中断请求");
	reader.interrupt(); // 主线程向 reader 发送了一个中断请求
	
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值