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()获取线程中断状态后,不会重置中断状态。

最新文章

  1. MySQL中You can't specify target table for update in FROM clause一场
  2. STM32之PWM波形输出配置总结
  3. verilog阻塞与非阻塞的初步理解(一)
  4. Nginx+Lua 积累
  5. UIMenuController的使用,对UILabel拷贝以及定制菜单
  6. SQL注入攻击技巧总结
  7. CAVLC
  8. 微软开源PowerShell并支持Linux和OS X
  9. Oracle decode函数 除数为零
  10. win7_32位安装MySQL_5.6以及密码修改方法
  11. Android error:No CPU/ABI system image available for this target
  12. hdu 3045 Picnic Cows(斜率优化DP)
  13. 学习如何看懂SQL Server执行计划(二)——函数计算篇
  14. 程序员的自我救赎---1.4.2: 核心框架讲解(BLL&Tool)
  15. 关于ftp的学习:ftp很多人都会用。但会用,不代表我们真正了解它。
  16. PHP实现单例模式和观察者模式
  17. packagereference 里面的资产是怎么回事?
  18. UVA 10118 Free Candies
  19. centos 安装sbt
  20. python import hashllb

热门文章

  1. 关于“100g文件全是数组,取最大的100个数”解决方法汇总
  2. 【Gamma】“北航社团帮”展示博客
  3. oracle拼接sql语句
  4. ASP.NET Core WebApi基于Redis实现Token接口安全认证
  5. 【原创】在windows下使用xampp搭建phpcms v9
  6. Spring BeanFactory继承结构图
  7. ML学习笔记之Jupyter Notebook各种使用方法
  8. 一次golang应用的docker部署经历
  9. 树莓派4B安装Raspbian系统及配置
  10. 基于C#实现的单点登录