为了账号安全,请及时绑定邮箱和手机立即绑定

线程的优先级

线程的优先级

Yexiaomo 2016-08-12 12:07:31
问题: 已经设置了 线程的优先级,  但输出结果为什么是这样,  是因为 电脑 是 双核的吗?class SETPriority implements Runnable{ public void run(){ for(int count = 0; count < 10; count++) System.out.println( Thread.currentThread().getName() + count); } } public class SetPriorityDemo{ public static void main(String[] args){ Thread maxPro = new Thread(new SETPriority(), "MAX..."); Thread minPro = new Thread(new SETPriority(), "min..."); maxPro.setPriority(10); //设置优先级 为 10 minPro.setPriority(1);  //设置优先级 为  1 maxPro.start(); minPro.start(); System.out.println("........END"); //main 线程的优先级 为 普通, 相当于 5 } }下面列举 几种 输出结果 ----------------------------分割线----------------------------------------------------------------分割线------------------------------------
查看完整描述

3 回答

已采纳
?
慕标2337738

TA贡献23条经验 获得超13个赞

优先级设置不是一定执行高的,只是执行的概率高,这点要清楚

查看完整回答
1 反对 回复 2016-08-12
  • Yexiaomo
    Yexiaomo
    明白了, 但这样的概率 有的低了吧, 可能是 测试的样本太少了, 作用不明显
?
慕标2337738

TA贡献23条经验 获得超13个赞

package practice;
class SETPriority implements Runnable{
    public void run(){
synchronized ("") {
 
        for(int count = 0; count < 10; count++)
            System.out.println( Thread.currentThread().getName() + count);
    }
}
}
 
public class SetPriorityDemo{
    public static void main(String[] args){
        Thread maxPro = new Thread(new SETPriority(), "MAX...");
        Thread minPro = new Thread(new SETPriority(), "min...");
 
        maxPro.setPriority(10); //设置优先级 为 10
        minPro.setPriority(1);  //设置优先级 为  1
 
        maxPro.start();
        minPro.start();
 
        System.out.println("........END"); //main 线程的优先级 为 普通, 相当于 5
    }
}

加锁,线程不安全。

查看完整回答
1 反对 回复 2016-08-12
?
甫艾蒽廷

TA贡献38条经验 获得超21个赞

每个类都有自己的优先级,一般property用1-10的整数表示,默认优先级是5,优先级最高是10;优先级高的线程并不一定比优先级低的线程执行的机会高,只是执行的机率高;默认一个线程的优先级和创建他的线程优先级相同;

查看完整回答
反对 回复 2016-08-12
  • 3 回答
  • 0 关注
  • 2169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信