Java学习笔记74. Java线程的优先级

不同的线程就像是不同的工作小分队,而系统的计算资源就像是工作场所,工作场所一次只能让一个线程来工作,与此同时,其它的线程就需要等待。但是不同的小分队的重要程度不同,就应该分别看待,这就是优先级的设定。Java用setPriority方法来给线程设置优先级, 数字1~10分别代码10个不同的优先级,1的优先级最小,10的优先级最高,如果不设定优先级,则默认的优先级为5。Java还用3个常量分别代表高中低的优先级, 分别是:MAX_PRIORITY, NORM_PRIORITY, MIN_PRIORITY.

下面这个例子展示了如果使用setPriority()方法:

class demothread1 extends Thread{        //线程类demothread1
    public void run(){    //run方法,输出a到h的字符
        for(char i='a';i<'h';i++){
            System.out.print(i);
        }
    }
}
class demothread2 extends Thread{    //线程类demothread2

    public void run(){    //线程类,输出1到9的数字
        for(int i=1;i<9;i++){
            System.out.print(i);
        }
    }
}
public class demosetPriority{
    public static void main(String[] args){
        demothread1 d1 = new demothread1();
        demothread2 d2 = new demothread2();
        d1.setPriority(1);    //设定线程类实例d1的优先级
        d2.setPriority(10);   //设定线程类实例d2的优先级
        d1.start();        //启动d1
        d2.start();        //启动d2
        System.out.println();    //主线程main中的换行语句
    }
}

编译执行之,结果如下:

可见,在设定了优先级之后,优先级高的线程有更高的概率得到优先执行,但是结果也不是一定的。先执行低优先级的线程的时候也有。可见,优先级只是决定执行顺序的一个因素,应该是一个重要因素,但是不绝对。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值