下文笔者讲述Java中获取线程状态的方法分享,如下所示:

java线程状态的简介

Java中的线程整个生命周期中分为5种状态:1.新建状态(New):新建的线程都为此状态2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法该状态的线程在"可运行线程池"中,是可运行,一旦获得CPU权限,则立即运行 3.运行状态(Running):已经取得CPU权限,并执行代码4.阻塞状态(Blocked):因某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态阻塞的情况分三种:4.1 等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。4.2 同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。4.3 其他阻塞:运行的线程执行sleep()或join()方法,或发出了I/O请求时,JVM会把该线程置为阻塞状态当sleep()状态超时、join()等待线程终止或者超时或I/O处理完毕时,线程重新转入就绪状态5.死亡状态(Dead):线程执行完了或因异常退出了run()方法,该线程结束生命周期

获取线程状态的示例分享

package com.java265.other;
public class Test16 {public static void main(String[] args) throws Exception {MyThread2 a = new MyThread2();a.setName("我是java265.com定义的线程!");printThreadInfo(a);a.start();Thread.sleep(50);printThreadInfo(a);a.waiting = false;Thread.sleep(50);printThreadInfo(a);a.notice();Thread.sleep(50);printThreadInfo(a);while (a.isAlive())System.out.println("alive");printThreadInfo(a);}static void printThreadInfo(Thread t) {System.out.println(t.getName() + " 存活:" + t.isAlive() + " 状态:" + t.getState());}
}class MyThread2 extends Thread {boolean waiting = true;boolean ready = false;MyThread2() {}public void run() {String thrdName = Thread.currentThread().getName();System.out.println(thrdName + " 启动");while (waiting)System.out.println("等待:" + waiting);System.out.println("等待...");startWait();try {Thread.sleep(1000);} catch (Exception exc) {System.out.println(thrdName + " 中断。");}System.out.println(thrdName + " 结束。");}synchronized void startWait() {try {while (!ready)wait();} catch (InterruptedException exc) {System.out.println("wait() 中断。");}}synchronized void notice() {ready = true;notify();}
}-------运行以上代码,将输出以下信息-------
alive
alive
alive
我是java265.com定义的线程! 结束。
alive
我是java265.com定义的线程! 存活:false 状态:TERMINATED

Java 如何获取线程状态呢?相关推荐

  1. Java 线程实例二(终止线程、生产者/消费者问题、获取线程状态、获取所有线程、查看线程优先级、中断线程)

    终止线程 Java中原来在Thread中提供了stop()方法来终止线程,但这个方法是不安全的,所以一般不建议使用. 本文向大家介绍使用interrupt方法中断线程. 使用interrupt方法来终 ...

  2. Java中的线程状态

    参考:https://my.oschina.net/goldenshaw?tab=newest&catalogId=3277710 1 线程状态 Java中的线程一共有6种状态. 在某个时刻, ...

  3. (Java多线程)线程状态

    文章目录 线程状态概述 Timed Wating(计时等待) Blocked(锁阻塞) Waiting无限等待 线程状态概述 在API中java.lang.Thread.State 这个枚举给了6种线 ...

  4. java 线程状态_浅析Java中的线程状态

    一.线程的5种状态 众所周知,Java的线程状态有5种,分别对应上图中五种不同颜色,下面对这5种状态及状态间的转化做相应的解释: 1. 初始化状态:新建一个线程对象 2. 可运行状态:其他线程调用了该 ...

  5. 【java笔记】线程状态

    六种线程状态: NEW(新建): 线程刚被创建,但是并未启动,还没调用start方法 Runnable(可运行):线程可以在java虚拟机中运行 的状态,可能正在运行自己代码,也可能没有,这取决于操作 ...

  6. Java的六种线程状态

    Java语言定义了6种线程状态,在任意一个时间点,一个线程只能有且只有其中的一种状态,这6种状态分别如下. 新建(New):创建后尚未启动的线程处于这种状态. 运行(Runable):Runable包 ...

  7. java 线程池 状态_【Java多线程】线程状态、线程池状态

    线程状态: 线程共包括以下5种状态. 1. 新建状态(New)线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread(). 2. 就绪状态(Runnable)也 ...

  8. 你如何在java中获取线程堆_如何在Windows上获取未在控制台中运行的Java进程的线程和堆转储...

    问题 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程.我想获得该子进程的线程/堆转储. 在Unix上,我可以做akill -3 但是在Windows AFAIK上获取线程转 ...

  9. java中线程的生命周期_Java中的线程生命周期– Java中的线程状态

    java中线程的生命周期 Understanding Thread Life Cycle in Java and Thread States are very important when you a ...

  10. Java的六种线程状态(不是五种)

    网上的文章鱼龙混杂,对于Java到底几种线程状态?这个问题,根据<Java并发编程>这本经典的教材里提到的,是六种状态,不是很多文章中提到的五种状态.这些文章中所提到的是操作系统的五种状态 ...

最新文章

  1. 汇编程序设计与计算机体系结构软件工程师教程笔记:函数、字符串、浮点运算
  2. python比较两个xml_python比较2个xml内容的方法
  3. 解决嵌套list类型的JSONObject/JSONArray转换成原来list问题。
  4. AMAZING AUCTION (第三届省赛)
  5. C语言文件读写(4)-判断文件是否结束
  6. Apache Kafka-SpringBoot整合Kafka发送复杂对象
  7. (简单)华为荣耀4A SCL-TL00的usb调试模式在哪里打开的方法
  8. VS2017-VC++中慎用sizeof
  9. 【简易教程】基于Vue-cli使用eslint指南
  10. Robot Framework操作mongodb数据库
  11. Python3内置模块之json编码解码方法讲解
  12. oppo刷机工具_黔隆科技刷机教程OPPOR9TM忘记密码免刷机保资料解屏幕锁教程
  13. 设计模式-创建型模式-模板方法
  14. 2020最新文本检测算法TextFuseNet
  15. opencv之resize
  16. C# 异步定时器,可以重载; System.Timers.Timer
  17. jupyter扩展插件Nbextensions使用
  18. ARM指令解析之LSL
  19. 商标设计后一定要向商标局进行重新提交,商标持有公司变更后要及时变更商标
  20. Dotween简单安装设置

热门文章

  1. android horizontalscrollview 动画,Android horizontalscrollview使用教程
  2. SO、SOP、SOIC、MSOP、TSSOP、TSOP、VSSOP、SSOP、SOJ封装详解
  3. 5.8Gwifi信道
  4. 意派导出html,三款专业H5工具评测:意派Epub360、ih5、mugeda
  5. 如何利用计算机换算16进制,16进制怎么转换10进制?计算机进制转换方法汇总
  6. 面向接口编程(面向协议编程)
  7. 在VMware虚拟机中安装RHEL7
  8. Kvaser、C++、Qt编写监控界面(三)
  9. 2022年北京航空航天大学计算机考研复试分数线
  10. 6LowPAN与CoAP协议