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

源码查看Thread.interrupted()和Thread.currentThread().isInterrupted()区别的更多相关文章

  1. android 网络_网络源码查看器

    xml设计 <?xml version="1.0"?> -<LinearLayout tools:context=".MainActivity" ...

  2. Android 网络图片查看器与网页源码查看器

    在AndroidManifest.xml里面先添加访问网络的权限: <uses-permission android:name="android.permission.INTERNET ...

  3. qml源码查看

    已5.4为例说明: QtQuick源码查看: 地址:Qt\Qt5.4.1\5.4\Src\qtdeclarative\src\quick\items Qt control源码查看: 地址:\Qt\Qt ...

  4. idea导入jdk源码查看(xjl456852原创)

    idea添加了jdk环境后,却无法查看jdk源码,只能通过idea自带的反编译查看,看起来有些不爽. 下面来说一下如何设置,导入jdk源码,查看时通过源码查看jdk. 1.点击菜单 File -> ...

  5. Spark源码分析:多种部署方式之间的区别与联系(转)

    原文链接:Spark源码分析:多种部署方式之间的区别与联系(1) 从官方的文档我们可以知道,Spark的部署方式有很多种:local.Standalone.Mesos.YARN.....不同部署方式的 ...

  6. JDK源码那些事儿之浅析Thread上篇

    JAVA中多线程的操作对于初学者而言是比较难理解的,其实联想到底层操作系统时我们可能会稍微明白些,对于程序而言最终都是硬件上运行二进制指令,然而,这些又太过底层,今天来看一下JAVA中的线程,浅析JD ...

  7. Android(java)学习笔记203:网页源码查看器(Handler消息机制)

    1.项目框架图: 2.首先是布局文件activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com ...

  8. 安卓http源码查看器详解

    1.效果图如下,输入网址就可以看到该网址的源码

  9. Android(java)学习笔记146:网页源码查看器(Handler消息机制)

    1.项目框架图: 2.首先是布局文件activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com ...

随机推荐

  1. 网卡监控脚本--nagios

    #!/usr/bin/python26#filename:check_traffic.py#the python script function  for monitoring network tra ...

  2. mysql(七)查询基本语法

    连接 外连接 如表-------------------------------------------------table1 | table2 |------------------------- ...

  3. how to compile and replace ubuntu kernel

    how to compile and replace ubuntu kernel 0. environment -ubuntu 1804 64bit 1. prepare source code su ...

  4. pycharm安装pytorch失败的问题

    在无GPU的情况下,打算安装pytorch跑几个demo练练手,但是pycharm发现总是失败,无法安装成功.错误显示如下: 无奈之下,只能够使用官方推荐的命令pip3安装,命令如下: pip3 in ...

  5. Linux 就该这么学 CH07 使用RAID和LVM磁盘阵列技术

    1 RAID (独立冗余磁盘阵列) RAID 技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,并把数据切割成多个区段之后分别存在各个不同的物理硬盘设备上,然后利用分散读写计数来提升磁盘 ...

  6. putty常用配置修改

    1.修改putty默认的颜色方案 初次使用putty时,发现默认的配色的方案看得非常难受,特别是黑色背景,深蓝色的字体,根本看不清楚,下面介绍如何更改默认的配色方案: (1)下载配置文件 首先下载注册 ...

  7. JavaSE 面试题: 方法的参数传递机制

    JavaSE 面试题 方法的参数传递机制 import java.util.Arrays; public class Test { public static void main(String[] a ...

  8. CentOS7-Docker 安装 Gitlab详细篇

    官方教程 https://docs.gitlab.com/omnibus/docker/ 建议虚拟机内存2G以上 搜索镜像 docker search gitlab 下载镜像文件 docker pul ...

  9. 第十一节:Asp.Net Core 之内容缓存(IMemoryCache)

    1. 整体说明 ASP.NET Core 支持多种不同的缓存,最简单的缓存基于 IMemoryCache,它表示存储在 Web 服务器内存中的缓存,内存缓存可以存储任何对象,存储形式键值对,需要 .n ...

  10. groovy常用语法及实战

    groovy语言简介 一种基于JVM的敏捷开发语言,作为编程语言可编译成java字节码,也可以作为脚本语言解释执行. 结合了Python.Ruby和Smalltalk的许多强大的特性 支持面向对象编程 ...