栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA中线程的状态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA中线程的状态

一个线程只能有一次NEW状态和TERMINATED状态。

NEW(新建状态):创建后,启动前。线程就处于这个状态。

RUNNABLE(可运行状态):线程正在执行该方法(run方法)。线程就处于该状态。

BLOCKED(阻塞状态):一个线程获取synchornized锁对象失败。线程就处于该状态。

WAITING(等待状态):一个线程获取Lock锁对象失败,或者调用wait()。线程就处于该状态。

TIMED_WAITING(计时等待状态):线程正在执行sleep方法,或者wait(long mills)。线程就处于该状态。

TERMINATED(消亡状态):线程把任务执行完毕后。线程就处于该状态。

NEW(新建状态):

public class Test01 {
	public static void main(String[] args) {
		Thread t = new Thread();
		State s = t.getState();
		System.out.println("t的状态为:"+s);
	}
}

//输出为:t的状态为:NEW

RUNNABLE(可运行状态):

public class Test02 {
	public static void main(String[] args) throws InterruptedException {
		Runnable r = new Runnable() {
			@Override
			public void run() {
				for(;;);
			}
		};
		
		Thread t = new Thread(r);
		t.start();
		Thread.sleep(100);//保证线程已经启动,并开始执行run方法中的代码
		State s = t.getState();
		System.out.println("t的状态为:"+s);
	}
}
//输出为:t的状态为:RUNNABLE

BLOCKED(阻塞状态):

public class Test05 {
	public static void main(String[] args) throws InterruptedException {
		Runnable r = new Runnable() {
			@Override
			public void run() {
				synchronized(this) {
					for(;;);
				}
			}
		};
		
		Thread t1 = new Thread(r);
		Thread t2 = new Thread(r);
		t1.start();
		t2.start();
		Thread.sleep(100);//保证两个线程都已经启动,并开始执行run方法
		System.out.println("t1的状态为:"+t1.getState());
		System.out.println("t2的状态为:"+t2.getState());
	}
}
//输出结果:t1的状态为:RUNNABLE
//         t2的状态为:BLOCKED

WAITING(等待状态):

public class Test06 {
	public static void main(String[] args) throws InterruptedException {
		Lock lock = new ReentrantLock();
		Runnable r = new Runnable() {
			@Override
			public void run() {
				//上锁
				lock.lock();
					for(;;);
				//lock.unlock();
			}
		};
		
		Thread t1 = new Thread(r);
		Thread t2 = new Thread(r);
		t1.start();
		t2.start();
		Thread.sleep(100);//保证两个线程都已经启动,并开始执行run方法
		System.out.println("t1的状态为:"+t1.getState());
		System.out.println("t2的状态为:"+t2.getState());
	}
}
//输出结果:t1的状态为:RUNNABLE
//         t2的状态为:WAITING

TIMED_WAITING(计时等待状态):

public class Test04 {
	public static void main(String[] args) throws InterruptedException {
		Runnable r = new Runnable() {
			@Override
			public void run() {
				try {
					Thread.sleep(50000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		};
		
		Thread t = new Thread(r);
		t.start();
		Thread.sleep(100);//保证线程已经启动,并开始执行run方法中的代码
		State s = t.getState();
		System.out.println("t的状态为:"+s);
	}
}
//输出结果:t的状态为:TIMED_WAITING

TERMINATED(消亡状态):

public class Test03 {
	public static void main(String[] args) throws InterruptedException {
		Runnable r = new Runnable() {
			@Override
			public void run() {
				System.out.println(Thread.currentThread().getName());
			}
		};
		
		Thread t = new Thread(r);
		t.start();
		Thread.sleep(1000);//保证线程已经启动,并把run方法中的代码执行完毕
		State s = t.getState();
		System.out.println("t的状态为:"+s);
	}
}
//输出为:Thread-0
//       t的状态为:TERMINATED

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007033.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号