在Java编程中,如何监视线程的状态?

以下示例演示如何通过扩展Thread类并使用currentThread.getName()方法来监视线程的状态。

package com.yiibai;

class MyThread2 extends Thread {
boolean waiting = true;
boolean ready = false; MyThread2() {
} 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 MonitoringThread {
public static void main(String args[]) throws Exception {
MyThread2 thrd = new MyThread2();
thrd.setName("MyThread #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());
}
}
Java

上述代码示例将产生以下结果 -

alive
alive
alive
alive
alive
............. 省略了一大波数据 ...............
alive
alive
MyThread #1 terminating.
alive
alive
alive
alive
alive
alive
alive
MyThread #1 Alive:=false State:=TERMINATED

Java如何监视线程的状态?的更多相关文章

  1. Java多线程之线程的状态迁移

    Java多线程之线程的状态迁移 下图整理了线程的状态迁移.图中的线程状态(Thread.Stat 中定义的Enum 名)NEW.RUNNABLE .TERMINATED.WAITING.TIMED_W ...

  2. Java多线程之线程的状态以及线程间协作通信导致的线程状态转换

      转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6561589.html  一:线程的状态以及变化图 Java中线程中状态可分为五种:New(新建状态),Ru ...

  3. Java——检测其他线程的状态以及启动已死亡的线程

    这次这个的思路是在主类中维护一个map,map的key是线程名,value是线程的状态,然后创建周期执行的线程通过检测这个map来判断进程的状态,如果有死亡的进程就把该进程启动. 首先是主类,这里的m ...

  4. java中线程的状态详解

    一.线程的五种状态   线程的生命周期可以大致分为5种,但这种说法是比较旧的一种说法,有点过时了,或者更确切的来说,这是操作系统的说法,而不是java的说法.但对下面所说的六种状态的理解有所帮助,所以 ...

  5. Java中一个线程只有六个状态。至于阻塞、可运行、挂起状态都是人们为了便于理解,自己加上去的。

    java中,线程的状态使用一个枚举类型来描述的.这个枚举一共有6个值: NEW(新建).RUNNABLE(运行).BLOCKED(锁池).TIMED_WAITING(定时等待).WAITING(等待) ...

  6. JAVA体系的线程的实现,线程的调度,状态的转换

    java体系中线程的实现 1.使用内核线程实现 内核线程就是直接由操作系统内核支持的线程,这种线程由内核来完成线程切换,内核通过操作调度器对线程进行调度,并负责将线程的任务映射到各个处理器上,每个内核 ...

  7. 并发基础(四) java中线程的状态

    一.程的五种状态   线程的生命周期可以大致分为5种,但这种说法是比较旧的一种说法,有点过时了,或者更确切的来说,这是操作系统的说法,而不是java的说法.但对下面所说的六种状态的理解有所帮助,所以也 ...

  8. Java并发之线程管理(线程基础知识)

    因为书中涵盖的知识点比较全,所以就以书中的目录来学习和记录.当然,学习书中知识的时候自己的思考和实践是最重要的.说到线程,脑子里大概知道是个什么东西,但很多东西都还是懵懵懂懂,这是最可怕的.所以想着细 ...

  9. Java多线程 2 线程的生命周期和状态控制

    一.线程的生命周期 线程状态转换图: 1.新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就 ...

随机推荐

  1. [Windows Azure] Walkthrough to Configure System Center Management Pack for Windows Azure Fabric Preview for SCOM 2012 SP1 (with a MetricsHub Bonus)

    The wait is finally over. This is a huge update to the Azure Management Pack over the one that was r ...

  2. Django入门(二)

    这一节主要介绍django中的model,template模板. model是django自带的orm框架,下面我们来搭建一个博客网站,来看看是如何使用的. 1.新建应用blog python man ...

  3. Linux命令格式及帮助命令详解

    昨天看了一个教程,关于Linux命令的,本来以为当是复习随便看看的,结果看了不禁汗颜,这个真挺有学问的,很多东西都是我还不知道的,故此做总结,此文适合于对Linux命令有一定了解但又不是很深入的孩子, ...

  4. android下使用adb启动程序或者服务

    susetprop service.adb.tcp.prot 5555stop adbdstart adbdnetstat 使用 adb install hello.apk可以安装一个apk但并不能启 ...

  5. 【AD】实用组策略/脚本集合 (重大更新20160627)

    文章原始出处 http://blog.51cto.com/xifanliang/1793576 http://bbs.51cto.com/thread-1170777-1.html 作者:xifaln ...

  6. 10个超赞的jQuery图片滑块动画

    在网站开发过程中,特别是前端开发这块,经常会使用到很多图片滑块动画,也就是一些基于jQuery和HTML5的焦点图插件.本文将为大家收集10个超赞的jQuery图片滑块动画,这些现成的jQuery插件 ...

  7. LeetCode: Palindrome 回文相关题目

    LeetCode: Palindrome 回文相关题目汇总 LeetCode: Palindrome Partitioning 解题报告 LeetCode: Palindrome Partitioni ...

  8. LeetCode: Insertion Sort List 解题报告

    Insertion Sort List Sort a linked list using insertion sort. SOLUTION: 使用一个dummynode 创建一个新的链,将旧的节点插入 ...

  9. 基于jquery横向手风琴效果

    基于jquery横向手风琴效果是一款基于jquery实现的左右滑动手风琴图片轮播切换特效.效果图如下: 在线预览   源码下载 效果图如下: <div class="flash&quo ...

  10. 关于C#单例Singleton的看法和使用

    首先明白一点,什么是单例模式? 单例模式是指一个类在一个应用程序运行时仅仅实例化一次,以后所有的调用都使用第一次实例化的对象,是应用程序级别的,与session,用户等无关,它比全局参数或静态类方式更 ...