线程-中断

线程-中断
  • 中断(interrupt)只是线程的一种状态,它不会抛出中断异常(throw InterruptedException),但是在Object.waitThread.Sleepjoin等方法会监控线程的中断状态,如果中断状态是true则抛出中断异常。
  • 中断不会让线程结束,它只是让处于阻塞的线程,跳出当前状态,向下流转。当然在Thread的设计者最初目的是通过中断结束当前线程,可是实际业务中,一般不会直接让线程直接结束,而是通过异常捕获机制,捕获之后做出相关的业务处理。
  • 在使用中断方法时,一定要注意Thread类中的
    public static boolean interrupted() {
        return currentThread().isInterrupted(true);
    }
     public boolean isInterrupted() {
        return isInterrupted(false);
    }
    private native boolean isInterrupted(boolean ClearInterrupted);
    

其中static boolean interrupted()是清除中断状态,也就是执行后,interrupt=false。
boolean isInterrupted()的意思是,设置interrupt=true。两者完全相反的含义。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前面的几篇文章主要介绍了线程的一些最基本的概念,包括线程的间的冲突及其解决办法,以及线程间的协作机制。本篇主要来学...
    Single_YAM阅读 482评论 0 3
  • 为什么要中断 Java中没有一种安全的抢占方法来停止线程,也没有安全的抢占方式停止任务,只有一些协作机制。 更好的...
    zlcook阅读 594评论 0 0
  • 取消任务的方式 Java中没有提供任何机制来安全地终止线程,但是提供了中断(Interruption)协作机制,能...
    Showdy阅读 507评论 0 6
  • 中断线程 thread.interrupt()用来中断线程,即将线程的中断状态位设置为true,注意中断操作并不会...
    刘建会阅读 2,570评论 0 1
  • 1.推迟满足感就像是一个读书一样啊,只有吃苦认真读书,才能上个好学校,努力不一定成功,但是不努力一定不成功,其实就...
    小爱歌呀阅读 134评论 0 0