Java如何显示线程状态?
在Java编程中,如何显示线程状态?
以下示例演示如何使用Thread类的isAlive()和getStatus()方法显示线程的不同状态。
package com.yiibai;
class MyThreads extends Thread {
boolean waiting = true;
boolean ready = false;
MyThreads() {
}
public void run() {
String thrdName = Thread.currentThread().getName();
System.out.println(thrdName + " starting.");
while (waiting)
System.out.println("waiting:" + waiting);
System.out.println("waiting...");
startWait();
try {
Thread.sleep(1000);
} catch (Exception exc) {
System.out.println(thrdName + " interrupted.");
}
System.out.println(thrdName + " terminating.");
}
synchronized void startWait() {
try {
while (!ready)
wait();
} catch (InterruptedException exc) {
System.out.println("wait() interrupted");
}
}
synchronized void notice() {
ready = true;
notify();
}
}
public class DisplayThreadStatus {
public static void main(String args[]) throws Exception {
MyThreads thrd = new MyThreads();
thrd.setName("MyThreads #1");
showThreadStatus(thrd);
thrd.start();
Thread.sleep(50);
showThreadStatus(thrd);
thrd.waiting = false;
Thread.sleep(50);
showThreadStatus(thrd);
thrd.notice();
Thread.sleep(50);
showThreadStatus(thrd);
while (thrd.isAlive())
System.out.println("alive");
showThreadStatus(thrd);
}
static void showThreadStatus(Thread thrd) {
System.out.println(thrd.getName() + " Alive:" + thrd.isAlive() + " State:" + thrd.getState());
}
}
上述代码示例将产生以下结果 -
MyThreads #1 Alive:false State:NEW
MyThreads #1 starting.
waiting:true
waiting:true
alive
....... 省略 ....
alive
MyThreads #1 terminating.
alive
MyThreads #1 Alive:false State:TERMINATED
Java如何显示线程状态?的更多相关文章
- [译]线程生命周期-理解Java中的线程状态
线程生命周期-理解Java中的线程状态 在多线程编程环境下,理解线程生命周期和线程状态非常重要. 在上一篇教程中,我们已经学习了如何创建java线程:实现Runnable接口或者成为Thread的子类 ...
- Java中的线程状态转换和线程控制常用方法
Java 中的线程状态转换: [注]:不是 start 之后就立刻开始执行, 只是就绪了(CPU 可能正在运行其他的线程). [注]:只有被 CPU 调度之后,线程才开始执行, 当 CPU 分配给你的 ...
- Java基础教程——线程状态
线程状态 JAVA定义了6种线程状态: Thread.State public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, ...
- Java并发之线程状态及Thread常用方法
本篇文章主要讲解线程的虚拟机状态和线程基本方法,希望可以加深对线程的使用理解. 一.线程的虚拟机状态 线程对象在不同的运行期间有不同的状态,状态信息定义在Thread公共静态枚举java.lang.T ...
- 【Java多线程】线程状态、线程池状态
线程状态: 线程共包括以下5种状态.1. 新建状态(New) 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread().2. 就绪状态(Runnable) 也 ...
- Java多线程之线程状态转换图
说明:线程共包括以下5种状态.1. 新建状态(New) : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread().2. 就绪状态(Runn ...
- Java多线程及线程状态转换
以下内容整理自:http://blog.csdn.net/wtyvhreal/article/details/44176369 线程:是指进程中的一个执行流程. 线程与进程的区别:每个进程都需要操作 ...
- Java多线程之线程状态总结
概述 线程大家肯定不陌生,对于线程中的运行状态,自己经常搞混淆,这边按照下图记录下: 线程一般来说有如下几种状态: 新建,可运行,超时阻塞,等待阻塞,同步阻塞,死亡 yeild:当线程执行了yield ...
- 面试官:都说阻塞 I/O 模型将会使线程休眠,为什么 Java 线程状态却是 RUNNABLE?
摘要: 原创出处 https://studyidea.cn 「公众号:程序通事 」欢迎关注和转载,保留摘要,谢谢! 使用 Java 阻塞 I/O 模型读取数据,将会导致线程阻塞,线程将会进入休眠,从而 ...
随机推荐
- Lua官方文档与源码分析
https://www.lua.org/source/5.3/ http://www.cppblog.com/airtrack/archive/2012/09/19/191233.html https ...
- Ossec添加Agent端流程总结
(1) 服务器上添加客户端 在服务器上添加客户端,执行如下命令,按照提示进行输入,红色部分是我们输入的: [root@ossec-server logs]# /var/ossec/bin/manage ...
- win7如何不用点击用户名 直接自动登录桌面
win7如何不用点击用户名 直接自动登录桌面 在win7系统中开机时必须点击相应的用户名才能登陆系统桌面那么如何取消这一功能使当前账户自动登录到系统桌面呢? 1 .在开始菜单搜索框输入 “netplw ...
- ksoap2调用webservice传递参数丢失
参数有顺序要求,顺序设置正确即可.
- js设置cookie(原生js)
cookie 与 session 是网页开发中常用的信息存储方式.Cookie是在客户端开辟的一块可存储用户信息的地方:Session是在服务器内存中开辟的一块存储用户信息的地方. JavaScrip ...
- LeetCode: Linked List Cycle II 解题报告
Linked List Cycle II Given a linked list, return the node where the cycle begins. If there is no cyc ...
- 【Ubuntu】任务管理器loadruner
linux1 准备工作 可以通过两种方法验证服务器上是否配置了rstatd守护程序: ①使用rup命令,它用于报告计算机的各种统计信息,其中就包括rstatd的配置信息.使用命令rup 10 ...
- stopManagedWebLogic.sh强制关闭Managed Server
Adding force shutdown of managed server in weblogic. ----------------------------------------------- ...
- Vim中的寄存器
# Vim中的寄存器 ### 文件名寄存器---- 粘贴文件名 `"%p"` ### 查看vim中的寄存器---- 查看寄存器 `reg` 或 `dis` ### 详细介绍---- ...
- js 删除数组几种方法
var arr=['a','b','c']; 若要删除其中的'b',有两种方法: 1.delete方法:delete arr[1] 这种方式数组长度不变,此时arr[1]变为undefined了,但是 ...