Java多线程之观测线程状态和线程的优先级

观测线程

线程状态:
在这里插入图片描述
示例:

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的调度

猜你喜欢

转载自blog.csdn.net/I_r_o_n_M_a_n/article/details/113940786