java现成的interrupt方法比较容易误导新手,它其实是不会中断(停止)当前的线程,只是标志一下当前线程的某个状态值(中断标志位),并且这个状态为只对阻塞方法(比如说:                        Thread.sleep(),Thread.wait()或者I/O等)起作用,对于非阻塞方法不起任何作用。

每个线程都会有一个中断标志位(且当作是interrupt status吧),这个状态位默认为false状态,即非中断状态。当一个线程执行一个阻塞方法的时候,阻塞方法内部会不断地检测当前线程的interrupt status状态位,如果该状态位发生了改变(interrupt status被改变,比如由false变为true,具体有true改变为false是否会引起异常,我就还没确定,知道的园友欢迎指出),则这些阻塞方法内部会抛出InterruptedException异常,同时interrupt status状态为会重置(即变成false状态),当时这里要做一些额外的处理工作,请看下面截图:摘自:(https://www.ibm.com/developerworks/cn/java/j-jtp05236.html
    中断应该如何处理?我觉得以下这位仁兄说得有道理,摘自:http://www.cnblogs.com/onlywujun/p/3565082.html
 
    那线程的interrupt status状态位什么情况下会发生改变呢,就比如说在其他线程B调用线程A的interrupt()方法的时候,就会更改线程A的interrupt status状态位,当然应该还有情况会导致该状态位发生改变的,欢迎补充。
    为什么要线程要设置该标志位呢?详情请看下面的参考链接    


            http://www.cnblogs.com/onlywujun/p/3565082.html

最新文章

  1. Html中列表标签<ul>的使用
  2. Android中surface,surfaceview,sufaceholder以及surface客户端的关系
  3. Ado net Source 用法
  4. 15、ASP.NET MVC入门到精通——MVC-路由
  5. Nginx+uwsgi安装配置
  6. SQL表关联赋值、系统表、表数据删除
  7. WWDC 2013 Session笔记 - UIKit Dynamics入门
  8. C#中的泛型 【转】
  9. stage划分
  10. scrollView滚动(通过代码)
  11. sudo 免密码
  12. VCS引起的oracle数据库异常重新启动一例
  13. hdu 1068
  14. angular 自定义filter
  15. a标签实现文件下载
  16. LightOJ1370 Bi-shoe and Phi-shoe
  17. 几道比较有意思的js面试题
  18. HDU 1031(服装打分 **)
  19. xutils android studio引用问题
  20. fortran77读写文本文档

热门文章

  1. .db轻量级本地数据库
  2. 第八篇 Python异常
  3. 解决git一直输入用户名和密码的问题
  4. python爬取淘宝排名
  5. Balance(Stack)
  6. Navicat premium连不上Oracle的问题解决
  7. luoguP4868 Preprefix sum
  8. DRF的认证、权限 和 限制
  9. linux系统安全及应用——弱口令检测
  10. JDBC的概念&使用步骤