Java教程

java 并发(二)

本文主要是介绍java 并发(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

并发问题

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

数据竞争

死锁

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

资源不足(饿死)

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

优先权反转

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

这篇关于java 并发(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!