线程中断interrupt和LockSupport-创新互联

本文章将要介绍的内容有以下几点,读者朋友也可先自行思考一下相关问题:
  1. 线程中断 interrupt 方法怎么理解,意思就是线程中断了吗?那当前线程还能继续执行吗?
  2. 判断线程是否中断的方法有几个,它们之间有什么区别?
  3. LockSupport的 park/unpark 和 wait/notify 有什么区别?
  4. sleep 方法是怎么响应中断的?
  5. park 方法又是怎么响应中断的?

线程中断相关方法

线程中和中断相关的方法有三个,分别介绍如下:

“专业、务实、高效、创新、把客户的事当成自己的事”是我们每一个人一直以来坚持追求的企业文化。 创新互联建站是您可以信赖的网站建设服务商、专业的互联网服务提供商! 专注于成都网站设计、网站制作、软件开发、设计服务业务。我们始终坚持以客户需求为导向,结合用户体验与视觉传达,提供有针对性的项目解决方案,提供专业性的建议,创新互联建站将不断地超越自我,追逐市场,引领市场!

1) interrupt

我们一般都说这个方法是用来中断线程的,那么这个中断应该怎么理解呢? 就是说把当前正在执行的线程中断掉,不让它继续往下执行吗?

其实,不然。 此处,说的中断仅仅是给线程设置一个中断的标识(设置为true),线程还是会继续往下执行的。而线程怎么停止,则需要由我们自己去处理。 一会儿会用代码来说明这个。

2) isInterrupted

判断当前线程的中断状态,即判断线程的中断标识是true还是false。 注意,这个方法不会对线程原本的中断状态产生任何影响。

3) interrupted

也是判断线程的中断状态的。但是,需要注意的是,这个方法和 isInterrupted 有很大的不同。我们看下它们的源码:

public boolean isInterrupted() {  
    return isInterrupted(false);  
}public static boolean interrupted() {  
    return currentThread().isInterrupted(true);  
}//调用同一个方法,只是传参不同private native boolean isInterrupted(boolean ClearInterrupted);

首先 isInterrupted 方法是线程对象的方法,而 interrupted 是Thread类的静态方法。

线程中断 interrupt 和 LockSupport

名称栏目:线程中断interrupt和LockSupport-创新互联
本文网址:http://myzitong.com/article/ighpd.html