源码查看Thread.interrupted()和Thread.currentThread().isInterrupted()区别
2024-08-24 09:29:58
JAVA线程状态、线程START方法源码、多线程、JAVA线程池、如何停止一个线程等多线程问题
这两个方法有点容易记混,这里就记录一下源码。
Thread.interrupted()和Thread.currentThread().isInterrupted()区别
静态方法Thread.interrupted()源码如下:
public static boolean interrupted() {
return currentThread().isInterrupted(true);
}
可以看到,静态方法内部,调用了currentThread()获取当前线程后调用非静态方法isInterrupted();
根据源码,看到的区别是在于给isInterrupted()方法传参为true或不传参。
非静态方法Thread.currentThread().isInterrupted()源码如下:
public boolean isInterrupted() {
return isInterrupted(false);
}
调用了isInterrupted(boolean ClearInterrupted)的有参方法:
/**
* Tests if some Thread has been interrupted. The interrupted state
* is reset or not based on the value of ClearInterrupted that is
* passed.
*/
private native boolean isInterrupted(boolean ClearInterrupted);
该方法先获取线程中断状态,然后在根据参数决定是否重置中断状态,true重置,false不重置。
简单总结下:
静态方法Thread.interrupted()获取线程中断状态后,会重置中断状态为false;
非静态方法Thread.currentThread().isInterrupted()获取线程中断状态后,不会重置中断状态。
最新文章
- MySQL中You can't specify target table for update in FROM clause一场
- STM32之PWM波形输出配置总结
- verilog阻塞与非阻塞的初步理解(一)
- Nginx+Lua 积累
- UIMenuController的使用,对UILabel拷贝以及定制菜单
- SQL注入攻击技巧总结
- CAVLC
- 微软开源PowerShell并支持Linux和OS X
- Oracle decode函数 除数为零
- win7_32位安装MySQL_5.6以及密码修改方法
- Android error:No CPU/ABI system image available for this target
- hdu 3045 Picnic Cows(斜率优化DP)
- 学习如何看懂SQL Server执行计划(二)——函数计算篇
- 程序员的自我救赎---1.4.2: 核心框架讲解(BLL&;Tool)
- 关于ftp的学习:ftp很多人都会用。但会用,不代表我们真正了解它。
- PHP实现单例模式和观察者模式
- packagereference 里面的资产是怎么回事?
- UVA 10118 Free Candies
- centos 安装sbt
- python import hashllb