zoukankan      html  css  js  c++  java
  • 多线程死锁


    死锁原因

    1. 系统资源不足
    2. 线程运行顺序不合适
    3. 资源分配不当


    必要条件

    1. 互斥条件:一个资源只能被一个线程使用
    2. 请求和保持条件:一个线程因请求资源而阻塞时,对已获的资源保释不放
    3. 不剥夺条件:线程已获得的资源,在未使用完之前不能强行剥夺
    4. 循环等待条件:若干线程之间形成一种首尾相接的循环等待资源关系


    预防死锁

    1. 资源一次性分配:(破坏请求和保持条件)
    2. 可剥夺资源:当某线程新的资源未满足时,释放已占有资源(破坏不剥夺条件)
    3. 资源有序分配法:给每个资源赋予一个编号,每一个线程按照编号递增的顺序请求资源,释放则相反(破坏循环等待条件)


    解除死锁

    1. 撤销限于死锁的全部线程
    2. 逐个撤销限于死锁的线程,直到死锁不存在
    3. 从陷于思所得线程中逐个强迫放弃所占有的资源
    4. 从另外一些线程那里强行剥夺足够数量的资源分配给死锁的线程,以解除死锁状态
  • 相关阅读:
    快速排序
    冒泡排序
    桶排序
    Writer及其子类
    Reader及其子类
    OutputStream及其子类
    InputStream及其子类
    基础IO类和相关方法
    File类
    枚举
  • 原文地址:https://www.cnblogs.com/rilley/p/2736860.html
Copyright © 2011-2022 走看看