zoukankan      html  css  js  c++  java
  • 第十章 避免活跃性危险

    1.死锁

    检测死锁:在等待关系的有向图中搜索循环。

    产生死锁的4个必要条件:

    1)互斥条件:共享资源独占访问

    2)不可剥夺条件:不能强制其他线程释放资源

    3)请求和保持条件:在等待申请的新的资源时,继续占有已分配的资源

    4)循环等待条件:发生死锁时,存在一个循环等待的队列{P1, P2, P3, ...} P1等待P2占有的资源,P2等待P3占有的资源,...,Pn等待P1占有的资源。

    2.死锁的预防:

    1.资源一次性分配

    2.当某进程新申请的资源未获取时,释放已获取的资源

    3.资源有序分配,给资源分配编号,每个资源按编号递增请求资源,释放则相反

    3.死锁的避免:银行家算法

    参考:https://blog.csdn.net/l_xrui/article/details/72935173

    4.其他活跃性危险

    1.饥饿:常见的场景是因为优先级低而一直得不到资源,无法执行。不建议给线程设置优先级,使用Thread.yield主动让出CPU资源

    2.活锁:不停重试不可能成功的事件,而无法处理其他的任务。

    人生就像蒲公英,看似自由,其实身不由己。
  • 相关阅读:
    spring 定时任务 taskScheduler详解
    shiro.ini 配置详解
    nginx : server_name localhost 和 chrome : Provisional headers are shown
    参数文件管理
    归档日志管理
    日志文件管理
    控制文件管理
    数据文件管理
    OGG配置参数样例
    OGG配置案例一(源表与目标表结构一致)
  • 原文地址:https://www.cnblogs.com/walker993/p/9291874.html
Copyright © 2011-2022 走看看