采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
priorityQueue一定可以保证线程优先,但是Thread的setPriority方法设置的线程优先级只是一个概率事件,不一定可以保证,是这样吗?老师。这一点可以详细解释一下吗?
你好,你这里说的应该都是线程池里线程调度的顺序, priorityQueue本身只是一个优先队列,感觉你问的应该是PriorityBlockingQueue。PriorityBlockingQueue核心是个队列,按照一定优先顺序出队,线程池从线程队列里取出来的线程是按照指定的优先顺序来的。而Thread的setPriority方法设置的线程优先级本身也是可以的,但是当线程池中线程都具有相同的优先级,调度程序的JVM实现自由选择它喜欢的线程,这时候调度程序的操作有两种可能:一是选择一个线程运行,直到它阻塞或者运行完成为止。二是时间分片,为池内的每个线程提供均等的运行机会。
因此建议,当设计多线程应用程序的时候,尽量不要依赖于线程的优先级。因为线程调度优先级操作是没有保障的,只能把线程优先级作用作为一种提高程序效率的方法,但是尽量保证程序不依赖这种操作。
谢谢老师!
登录后可查看更多问答,登录/注册
构建完整并发与高并发知识体系,倍增高薪面试成功率!
1.8k 1
1.2k 18
1.2k 15
3.7k 12
1.3k 12
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号