Thread.state
New | 尚未启动的线程处于此状态 |
---|---|
Runnable | 在java虚拟机中执行的线程处于此状态 |
Blocked | 被阻塞等待监视器锁定的线程处于此状态 |
Waiting | 正在等待另一个线程执行特定动作的线程处于此状态 |
Time_Waiting | 正在等待另一个线程执行动作达到指定等待时间的线程处于此状态 |
Terminated | 已退出的线程处于此状态 |
package Thread; /** * @author zxy * 观察测试线程的状态 * */ public class TestState { public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(()->{ for(int i = 0; i < 5; i++) { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println(""); }); /* 观察状态 */ Thread.State state = thread.getState(); System.out.println(state); /* 观察启动后 */ thread.start();//启动线程 state = thread.getState(); System.out.println(state);//run /* 只要线程不终止,就一直输出状态 */ while(state != Thread.State.TERMINATED) { Thread.sleep(100); /* 更新线程状态 */ state = thread.getState(); System.out.println(state); } } }
输出:
NEW
RUNNABLE
TIMED_WAITING
TIMED_WAITING
·········
TIMED_WAITING
TERMINATED
package Thread; public class TestPriority { public static void main(String[] args) { /* 主线程默认优先级 */ System.out.println(Thread.currentThread().getName()+ "-->"+Thread.currentThread().getPriority()); MyPriority myPriority = new MyPriority(); Thread t1 = new Thread(myPriority); Thread t2 = new Thread(myPriority); Thread t3 = new Thread(myPriority); Thread t4 = new Thread(myPriority); Thread t5 = new Thread(myPriority); /* 先设置优先级 再启动start方法 */ t1.start(); t2.setPriority(1); t2.start(); t3.setPriority(Thread.MAX_PRIORITY); t3.start(); t4.setPriority(8); t4.start(); t5.setPriority(Thread.MAX_PRIORITY); t5.start(); } } class MyPriority implements Runnable{ @Override public void run() { // TODO Auto-generated method stub System.out.println(Thread.currentThread().getName()+ "-->"+Thread.currentThread().getPriority()); } }