• java 并发(二)


    并发问题

    • 数据竞争
    • 死锁
    • 活锁
    • 资源不足(饿死)
    • 优先权反转

    数据竞争

    死锁

    • 四个条件
      • 资源 只能互斥使用(一个资源每次只能被一个进程使用)
      • 请求者 不剥夺条件(进程已获得的资源,在末使用完之前,不能强行剥夺)
      • 请求与保持条件 (若干进程因请求资源而阻塞时,对已获得的资源保持不放)
      • 循环等待条件 (若干进程之间形成一种头尾相接的循环等待资源关系)
    • 日常开发,怎么避免出现死锁现象
      • 数据库出现死锁
        • 数据更新顺序保持一致(推荐)
        • 不放在同一事务处理(这就需要补偿机制保证数据一致性)
      • jvm出现的死锁
        • 封装到一个类中(也就是使用管程的方式)
        • 无锁的方式(乐观锁去操作)

    资源不足(饿死)

    • 使用公平锁呗
    • 或者优化锁,使得尽量公平

    优先权反转

    当一个低优先权的任务持有了一个高优先级任务所需的资源时,就会发生优先权反转。这样的话,
    低优先权的任务就会在高优先权的任务之前执行。

  • 相关阅读:
    CentOS安装系统时硬盘分区建议
    Linux下的gpt分区
    如何解决Win10账户没有了管理员权限
    redis数据的清空以及回滚
    禅道的作用以及安装
    Java数组的内存图
    Java中的内存划分
    进制
    Java数组
    Java方法的重载(Overload)
  • 原文地址:https://www.cnblogs.com/cgengwei/p/16651639.html
Copyright © 2020-2023  润新知