源码:
public class ThreadPriority implements Runnable {
private static Integer i = 0;
public void run() {
for (int n = 0; n < 5; n++) {
i += 1;
}
}
public static void main(String[] args) {
ThreadPriority tp = new ThreadPriority();
Thread td = new Thread(tp);
td.setPriority(Thread.MAX_PRIORITY);
td.start();
System.out.println("i=" + i);
}
}
----------------------------
main线程中创建同优先级的线程td,设置td优先级为Max 10,运行打印static值i应该是5才对,为什么还是输出0?难道main的优先级也是默认10吗?谢谢
请问java线程优先级的设置为什么没有效果?
答案:2 悬赏:70 手机版
解决时间 2021-03-13 01:41
- 提问者网友:温旧梦泪无声
- 2021-03-12 09:32
最佳答案
- 五星知识达人网友:平生事
- 2021-03-12 10:28
所谓线程优先级,个人理解只是对资源竞争的一个辨别依据,就是说当多个线程竞争资源时,具有较高优先级的线程会优先执行。
楼主的线程执行过程太短、逻辑太简单,基本不存在竞争问题,当然看不出优先级的作用……
其实所谓优先级只有在长期稳定运行的系统中才有用,这个很难测试的……
以上回答我觉得挺好,希望对你有帮助。我当初也是测试这样的方法,不过后来也是看了上面的答案,也理解了,确实也是这样的。
楼主的线程执行过程太短、逻辑太简单,基本不存在竞争问题,当然看不出优先级的作用……
其实所谓优先级只有在长期稳定运行的系统中才有用,这个很难测试的……
以上回答我觉得挺好,希望对你有帮助。我当初也是测试这样的方法,不过后来也是看了上面的答案,也理解了,确实也是这样的。
全部回答
- 1楼网友:笑迎怀羞
- 2021-03-12 11:54
线程的优先级越高,只是获取cpu的执行时间片多一些.并不是比别的线程先执行.线程在start启动后还有个等待cpu来相应处理的过程,并非一start就立刻执行的.先start的线程也不能保证就一定比后start的线程更早执行的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯