观测线程
线程状态:
示例:
package Multithreading;
// 观测线程状态
public class TestState {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("*********");
}
});
// 观察状态
Thread.State state = thread.getState();
System.out.println(state);
// 观察启动后
thread.start();// 启动线程
state = thread.getState();// 更新线程状态
System.out.println(state);
while (state != Thread.State.TERMINATED) {
// 只要线程不终止,就一直输出状态
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
state = thread.getState();// 更新线程状态
System.out.println(state);
}
}
}
运行结果:
线程的优先级
示例:
package Multithreading;
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, "t1");
Thread t2 = new Thread(myPriority, "t2");
Thread t3 = new Thread(myPriority, "t3");
Thread t4 = new Thread(myPriority, "t4");
Thread t5 = new Thread(myPriority, "t5");
Thread t6 = new Thread(myPriority, "t6");
// 先设置优先级 再去启动
t1.start();
t2.setPriority(4);
t2.start();
t3.setPriority(6);
t3.start();
t4.setPriority(Thread.MIN_PRIORITY);
t4.start();
t5.setPriority(Thread.NORM_PRIORITY);
t5.start();
t6.setPriority(Thread.MAX_PRIORITY);
t6.start();
}
}
class MyPriority implements Runnable {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "-->" + Thread.currentThread().getPriority());
}
}
注意:
优先级低只是意味着获得调度的概率低.并不是优先级低就不会被调用了.这都是看CPU的调度