请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于线程优先级的问题

priorityQueue一定可以保证线程优先,但是Thread的setPriority方法设置的线程优先级只是一个概率事件,不一定可以保证,是这样吗?老师。这一点可以详细解释一下吗?

正在回答

插入代码

2回答

Jimin 2018-03-27 19:13:28

你好,你这里说的应该都是线程池里线程调度的顺序, priorityQueue本身只是一个优先队列,感觉你问的应该是PriorityBlockingQueue。PriorityBlockingQueue核心是个队列,按照一定优先顺序出队,线程池从线程队列里取出来的线程是按照指定的优先顺序来的。而Thread的setPriority方法设置的线程优先级本身也是可以的,但是当线程池中线程都具有相同的优先级,调度程序的JVM实现自由选择它喜欢的线程,这时候调度程序的操作有两种可能:一是选择一个线程运行,直到它阻塞或者运行完成为止。二是时间分片,为池内的每个线程提供均等的运行机会。

因此建议,当设计多线程应用程序的时候,尽量不要依赖于线程的优先级。因为线程调度优先级操作是没有保障的,只能把线程优先级作用作为一种提高程序效率的方法,但是尽量保证程序不依赖这种操作。

1 回复 有任何疑惑可以回复我~
提问者 精慕门407133 2018-03-27 19:30:51

谢谢老师!

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号