Contents

20.2. 线程优先级

线程的调度程序根据线程决定每次线程应当何时运行,Java提供了10种优先级,分别用1~10整数表 示, 最高优先级是10用常量MAX_PRIORITY表示; 最低优先级是1用常量MIN_PRIORITY; 默认优先级是5用常量NORM_PRIORITY表示。

Thread类提供了setPriority(intnewPriority)方法可以设置线程优先级,通过getPriority()方法获得线程优先级。

Runner.java

package com.a51work.cn;

/**
 * 使用Runnable接口创建多线程
 */

//Thread类提供了setPriority(int newPriority)方法可以设置线程优先级,通过getPriority()方法获得线程优先级。
public class Runner implements Runnable {

//    方法覆盖
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            //打印次数和线程的名字
            System.out.printf("第%d次执行 - %s\n", i, Thread.currentThread().getName());
        }
        try {
            //随机生成休眠时间
            long sleepTime = (long) (1000 * Math.random());
            Thread.sleep(sleepTime);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //线程执行结束
        System.out.println("执行完成!" + Thread.currentThread().getName());
    }

    public static void main(String[] args) {
        // 创建线程t1,参数是一个线程执行对象Runner
        Thread t1 = new Thread(new Runner());
        //t1优先级最高
        t1.setPriority(Thread.MAX_PRIORITY);
        //开始线程t1
        t1.start();


        // 创建线程t2,参数是一个线程执行对象Runner
        Thread t2 = new Thread(new Runner(),"hujianli-Thread");
        //t2的优先级最低
        t2.setPriority(Thread.MIN_PRIORITY);
        //开始线程t1
        t2.start();
    }
}

/*
第0次执行 - Thread-0
第1次执行 - Thread-0
第2次执行 - Thread-0
第3次执行 - Thread-0
第4次执行 - Thread-0
第5次执行 - Thread-0
第6次执行 - Thread-0
第7次执行 - Thread-0
第8次执行 - Thread-0
第9次执行 - Thread-0
第0次执行 - hujianli-Thread
第1次执行 - hujianli-Thread
第2次执行 - hujianli-Thread
第3次执行 - hujianli-Thread
第4次执行 - hujianli-Thread
第5次执行 - hujianli-Thread
第6次执行 - hujianli-Thread
第7次执行 - hujianli-Thread
第8次执行 - hujianli-Thread
第9次执行 - hujianli-Thread
执行完成!hujianli-Thread
执行完成!Thread-0
* */