• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

java如何检测线程状态代码实例

java 程序员 6年前 (2019-02-18) 252次浏览 已收录 0个评论

如何通过继承 Thread 类创建一个线程并使用 currentThread.getName() 方法来监测线程的状态

package com.gaodaima;

public class ThreadAliveTest extends Thread {
	boolean waiting = true;
	boolean ready = false;

	ThreadAliveTest() {
	}

	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();
	}

	static void showThreadStatus(Thread thrd) {
		System.out.println(thrd.getName() + "Alive:=" + thrd.isAlive()
				+ " State:=" + thrd.getState());
	}

	public static void main(String[] args) throws InterruptedException {
		ThreadAliveTest thrd = new ThreadAliveTest();
        thrd.setName("ThreadAliveTest线程");
        showThreadStatus(thrd);
        thrd.start();
        Thread.sleep(100);
        showThreadStatus(thrd);
        thrd.waiting = false;
        Thread.sleep(100);
        showThreadStatus(thrd);
        thrd.notice();
        Thread.sleep(100);
        showThreadStatus(thrd);

        while (thrd.isAlive())
            System.out.println("alive");

        showThreadStatus(thrd);
	}
}

运行结果:

ThreadAliveTest线程Alive:=false State:=NEW
ThreadAliveTest线程 starting.
waiting:true
...
waiting:true
ThreadAliveTest线程Alive:=true State:=RUNNABLE
waiting:true
waiting:true
waiting...
ThreadAliveTest线程Alive:=true State:=WAITING
ThreadAliveTest线程Alive:=true State:=TIMED_WAITING
alive
...
alive
ThreadAliveTest线程 terminating.
alive
...
alive
ThreadAliveTest线程Alive:=false State:=TERMINATED

 


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java如何检测线程状态代码实例
喜欢 (1)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址