【Java并发编程】之二:线程中断(含代码)

转载请注明出处:http://blog.csdn.net/ns_code/article/details/17091267


使用interrupt()中断线程

    当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回。这里需要注意的是,如果只是单纯的调用interrupt()方法,线程并没有实际被中断,会继续往下执行。

    下面一段代码演示了休眠线程的中断:

public class SleepInterrupt extends Object implements Runnable{
	public void run(){
		try{
			System.out.println("in run() - about to sleep for 20 seconds");
			Thread.sleep(20000);
			System.out.println("in run() - woke up");
		}catch(InterruptedException e){
			System.out.println("in run() - interrupted while sleeping");
			//处理完中断异常后,返回到run()方法人口,
			//如果没有return,线程不会实际被中断,它会继续打印下面的信息
			return;  
		}
		System.out.println("in run() - leaving normally");
	}


	public static void main(String[] args) {
		SleepInterrupt si = new SleepInterrupt();
		Thread t = new Thread(si);
		t.start();
		//主线程休眠2秒,从而确保刚才启动的线程有机会执行一段时间
		try {
			Thread.sleep(2000); 
		}catch(InterruptedException e){
			e.printStackTrace();
		}
		System.out.println("in main() - interrupting other thread");
		//中断线程t
		t.interrupt();
		System.out.println("in main() - leaving");
	}
}
    运行结果如下:


      主线程启动新线程后&#
  • 36
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值