java线程中的interrupt,isInterrupt,interrupted方法以及如何终止线程(一)
来源:互联网 发布:淘宝怎么查看开店时长 编辑:程序博客网 时间:2024/05/21 14:43
在java的线程Thread类中有三个方法,比较容易混淆,在这里解释一下
(1)interrupt:置线程的中断状态
(2)isInterrupt:线程是否中断
(3)interrupted:返回线程的上次的中断状态,并清除中断状态
举个例子:
一般来说,阻塞函数,如:Thread.sleep、Thread.join、Object.wait、LockSupport.park等在检查到线程的中断状态时,会抛出InterruptedException,同时会清除线程的中断状态
对于InterruptedException的处理,可以有两种情况:
(1)外层代码可以处理这个异常,直接抛出这个异常即可
(2)如果不能抛出这个异常,比如在run()方法内,因为在得到这个异常的同时,线程的中断状态已经被清除了,需要保留线程的中断状态,则需要调用Thread.currentThread().interrupt()
另外,Thread.interrupted()在jdk库的源代码中比较常用,因为它既可以得到上一次线程的中断标志值,又可以同时清除线程的中断标志,一举两得,但同时也有坏处,就是这个函数有清除中断状态的副作用,不容易理解
(1)interrupt:置线程的中断状态
(2)isInterrupt:线程是否中断
(3)interrupted:返回线程的上次的中断状态,并清除中断状态
举个例子:
一般来说,阻塞函数,如:Thread.sleep、Thread.join、Object.wait、LockSupport.park等在检查到线程的中断状态时,会抛出InterruptedException,同时会清除线程的中断状态
对于InterruptedException的处理,可以有两种情况:
(1)外层代码可以处理这个异常,直接抛出这个异常即可
(2)如果不能抛出这个异常,比如在run()方法内,因为在得到这个异常的同时,线程的中断状态已经被清除了,需要保留线程的中断状态,则需要调用Thread.currentThread().interrupt()
另外,Thread.interrupted()在jdk库的源代码中比较常用,因为它既可以得到上一次线程的中断标志值,又可以同时清除线程的中断标志,一举两得,但同时也有坏处,就是这个函数有清除中断状态的副作用,不容易理解
阅读全文
0 0
- java线程中的interrupt,isInterrupt,interrupted方法以及如何终止线程(一)
- java线程中的interrupt,isInterrupt,interrupted方法以及如何终止线程(二)
- java线程中的interrupt,isInterrupt,interrupted方法
- java线程中的interrupt,isInterrupt,interrupted方法
- java线程中的interrupt,isInterrupt,interrupted方法
- java线程中的interrupt,isInterrupt,interrupted方法
- java线程中的interrupt,isInterrupt,interrupted方法
- java线程中的interrupt,isInterrupt,interrupted方法
- java线程中的interrupt,isInterrupt,interrupted方法
- java线程中的interrupt、interrupted、isInterrupt方法
- java线程中的interrupt,isInterrupt,interrupted方法
- Java线程之interrupt终止线程,Thread中的主要方法(五)
- Java thread的Interrupt, isInterrupt, interrupted
- 关于Java thread的interrupt, isInterrupt, interrupted
- 关于Java thread的interrupt, isInterrupt, interrupted
- Java中的线程中断:interrupt()、interrupted()和isInterrupted
- java线程interrupt()方法和线程终止方式
- 区分线程中的 interrupt() interrupted() isInterrupted()
- MySQL性能优化经验
- 把一个字符串中所有出现的大写字母都替换成小写字母,同时把小写字母替换成大写字母
- Deep Learning in Computer Vision
- SharedPreferences保存ChekBox
- JavaScript入门教程链接
- java线程中的interrupt,isInterrupt,interrupted方法以及如何终止线程(一)
- source tree中 git 不显示分支
- 二叉树
- es6 javascript对象方法Object.assign()
- java时间格式化SimpleDateFormat
- Weblogic 修改控制台 网址
- 加密算法
- mysql执行计划详解
- 出现次数的题