码迷,mamicode.com
首页 > 其他好文 > 详细

008 优先级和饥饿问题

时间:2018-05-01 12:32:02      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:线程   同步   不能   时间片轮转   它的   也会   就会   设置   唤醒   

一 . 概述

在上面我们说到由于线程的优先级的设置不当,造成了线程运行的程度会不同,

  最终会有一些线程很难得到运行的机会.

  一般操作系统是使用时间片轮转的方式进行线程的优先级的改变.


 

二 . 动态优先级

现代操作系统一般都使用动态优先级的模式,也就是说,一个线程当运行一次之后,它的优先级就会降低,

当将到最低的时候,

该线程的优先级又会被设置为最高.


 

三 .由于阻塞导致饥饿问题

  一个线程由于抢夺资源失败,导致该线程进入锁池之中(阻塞队列之中).

  当获取该资源的线程运行的时间花费的时间较多,那么进入阻塞队列的线程就会发生饥饿问题.


 

四 . 由于wait导致的饥饿问题

  由于同步不当,一个线程可能会进入到等待池之中,当该线程迟迟不能被唤醒,那么也会发生饥饿的问题.


 

五 . 问题的解决

  优先级的问题:

    优先级的设置只是一个概率上的事情,只有在大的统计范围内才有效.

  同步产生的问题:

    我们可以使用锁来替代synchronized完成任务.

008 优先级和饥饿问题

标签:线程   同步   不能   时间片轮转   它的   也会   就会   设置   唤醒   

原文地址:https://www.cnblogs.com/trekxu/p/8975631.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!