1、Thread.currentThread()方法: 返回当前正在运行的线程

一个简单的例子:

MyThread_7.Java类的构造函数是被main线程调用的,而run()方法是被名为Thread-0的线程调用的。注意这里使用thread.start(),而不是thread.run(),前者run()方法是自动调用的,后者并没有另起一个线程,而是直接调用MyThread_7类的run()方法。

2、isAlive()方法:判断当前线程是否处于活动状态

“活动状态”是指线程处于运行或者准备开始运行的状态。下面通过两个例子说明this与Thread.currentThread()的差异。

(1)例子一:

分析:Thread.currentThread()返回的是当前运行的线程,而this是指当前对象。本例中,MyThread_8.java的构造方法是被main线程调用的,run()方法是被线程Thread-0调用的,而this是指MyThread_8类的实例,是线程Thread-0。因此在调用构造方法时,Thread.currentThread().getName()返回的是main,this.getName()返回的是Thread-0,而由于当前运行的线程是main,而不是this对应的Thread-0线程,故this.isAlive()返回false。在调用run()方法时的分析可以类比。

(2)例子二:将线程对象以构造参数的方式传递给Thread对象,将run()方法交由其它线程来调用

分析:与上一个例子对比,发现run()的输出不同。本例中,this(对应Thread-0)的run方法是交由线程Thread-run执行的,而不是由自己执行。所以在run()方法执行时,Thread.currentThread().getName()返回的是Thread-run,this.isAlive()返回的是false。

要分清楚Thread.currentThread()与this的区别。

3、Thread.sleep():使“正在执行的线程”休眠指定的毫秒数。

这个“正在执行的程序”是指this.currentThread()返回的线程。

在run()方法中调用Thread.sleep(2000)方法,会使正在运行的线程(Thread-0)休眠2000毫秒,是run()输出的begin time与end time之差。由本例还可见,mian线程与Thread-0线程是异步执行的,main线程运行完后,Thread-0线程再运行。

Thread.currentThread()、isAlive()、Thread.sleep()的使用相关推荐

  1. Thread.currentThread()输出Thread[pool-2-thread-1,5,main]含义

    如图Thread.currentThread()输出Thread[pool-2-thread-1,5,main],其中含义如下: pool-2指的是有两个线程池: thread-1指的是当前线程池的线 ...

  2. Thread.currentThread()方法、进程、线程、多线程相关总结(二)

    Thread.currentThread()方法 Thread.currentThread()可以获取当前线程的引用,一般都是在没有线程对象又需要获得线程信息时通过Thread.currentThre ...

  3. Thread.currentThread()与this的区别

    在自定义线程类时,如果线程类是继承java.lang.Thread的话,那么线程类就可以使用this关键字去调用继承自父类Thread的方法,this就是当前的对象. 另一方面,Thread.curr ...

  4. Thread.currentThread().interrupt()和Thread.interrupted()和Thread.currentThread().isInterrupted()

    Thread.interrupted() 可以返回当前标志位并使标志位为false Thread.currentThread().interrupt() 可以使标志位置为true Thread.cur ...

  5. Thread.currentThread.interrupt()

    Thread.currentThread.interrupt() 只对阻塞线程起作用, 当线程阻塞时,调用interrupt方法后,该线程会得到一个interrupt异常,可以通过对该异常的处理而退出 ...

  6. Java Thread interrupt isAlive Volatile

    1.1 Overview 1.2 Get a reference to yourself as a thread 1.3 Summary of methods 2.1 What is an inter ...

  7. Thread.currentThread().getContextClassLoader() 和 Class.getClassLoader()区别

    查了一些资料也不是太明白两个的区别,但是前者是最安全的用法 打个简单的比方,你一个WEB程序,发布到Tomcat里面运行. 首先是执行Tomcat org.apache.catalina.startu ...

  8. Thread.currentThread().getContextClassLoader().getResourceAsStream()读取配置文件

    Java中使用的路径,分为两种:绝对路径和相对路径.具体而言,又分为四种: 一.URI形式的绝对资源路径 如:file:/D:/java/eclipse/workspace/j/bin/a URL是U ...

  9. 演示Thread.sleep(100)和Thread.currentThread().isInterrupted()+@Deprecated:将方法标注为废弃的方法...

    package charpter08; public class TestInterrupt01 { public static void main(String[] args) { Processo ...

最新文章

  1. 将日志中的指定字段对齐显示输出
  2. python中nlp的库_单词袋简介以及如何在Python for NLP中对其进行编码
  3. jsp获取连接池的实时连接数_PHP进阶教程-实现一个简单的MySQL连接池
  4. Amazon、Linux基金会开发边缘网络交换器操作系统
  5. 使用mysql索引的规则
  6. 【李宏毅2020 ML/DL】P4 Basic Concept
  7. java stack 实现_Swift Stack实现
  8. C++命名空间和缺省参数的概念
  9. “互联网+”大赛全市第三名软件杯全国第一名 - Cloud Lab商业策划书
  10. 泛微OA的http接口创建
  11. 什么是胖客户端和瘦客户端?什么是哑终端?
  12. matlab百分号是什么意思,matlab 两个百分号
  13. ESP32 文件存储 spiffs
  14. 调用系统safair 在模拟器下无法成功
  15. 为什么8G运行内存的电脑,开几个WORD文档,运行内存就被占满了,WPS很占用内存吗
  16. 基于SSM旅游纪念品购物网站(idea-javaweb-javaee-j2ee-springboot)订单管理-购物评价-会员管理-购物车实现
  17. Java问题集锦--org.apache.maven.archiver.MavenArchiver.getManifest错误
  18. perp系列之二:perp源码README
  19. upc 个人训练赛第三场:排课表(容斥原理+组合数学)
  20. Oracle项目管理产品核心优势之项目工作任务闭环管理

热门文章

  1. 教培机构如何搭建在线教育网校平台
  2. 水果店怎么搞活动方案,水果店促销活动方案
  3. 人工智能的未来--神经科学启发的类脑计算综述
  4. 【学习笔记】使用魔数快速求平方根
  5. Mac使用技巧/M1 Mac安装 PS 2021 闪退、卡启动界面解决方法
  6. Android通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比
  7. pytorch实现word_embedding(negative_sampling的skip-gram模型)
  8. 判断web网站是否站库分离
  9. 【图像识别与处理】构建用于垃圾分类的图像分类器
  10. 计算机小游戏有哪些,计算机有哪些单机游戏可以耐玩,4 G以下?