JavaInterview JavaInterview
首页
指南
分类
标签
归档
  • CSDN (opens new window)
  • 文档集合 (opens new window)
  • 系统架构 (opens new window)
  • 微信号 (opens new window)
  • 公众号 (opens new window)

『Java面试+Java学习』
首页
指南
分类
标签
归档
  • CSDN (opens new window)
  • 文档集合 (opens new window)
  • 系统架构 (opens new window)
  • 微信号 (opens new window)
  • 公众号 (opens new window)
  • 指南
  • 简历

  • Java

  • 面试

    • 所有

    • 核心

    • 源码

    • 算法

    • 高频

      • 笔试基础题
      • MySQL各个版本区别
      • MySQL自身如何处理死锁
      • 为什么是先添加队列而不是先创建最大线程
      • 数据库常用的锁有哪些
      • 生产者和消费者5种实现方式
      • Redis内存管理的基石zmalloc
      • 如何动态修改线程池参数
      • 流量高峰时的性能瓶颈有哪些以及如何来解决
      • Java SPI与Dubbo SPI有什么区别
      • JVM运行时数据区(堆、栈、方法区)指向关系
      • Java new对象过程
      • 池化技术(线程池、连接池、内存池)
      • Spring的三级缓存解决循环依赖
      • K8S面试题大全
      • 服务治理、微服务与Service Mesh
      • SpringBoot自定义starter
      • 限流原理解析
      • Redis部署的三种模式(主从复制、哨兵、集群)
      • 敏感词过滤(DFA算法_Trie前缀树)
      • Java线程间通信方式
      • CPU占用过高排查
      • 线程死锁及解决方案
        • 解答
      • 分布式事务
      • 分布式锁
      • JVM调优
      • Synchronized锁升级(锁膨胀)
      • Paxos、Raft、ZAB协议
  • 算法

  • interview
  • hf
JavaInterview.cn
2022-10-24
目录

线程死锁及解决方案Java

文章发布较早,内容可能过时,阅读注意甄别。

# 解答

线程死锁的四个必要条件

如果在一个系统中以下四个条件同时成立,那么就能引起死锁:

  • 互斥性:线程对资源的占有是排他性的,一个资源只能被一个线程占有,直到释放。
  • 请求和保持条件:一个线程对请求被占有资源发生阻塞时,对已经获得的资源不释放。
  • 不剥夺:一个线程在释放资源之前,其他的线程无法剥夺占用。
  • 循环等待:发生死锁时,线程进入死循环,永久阻塞。

解决方法:

  • 互斥性,可用ThreadLocal
  • 请求和保持条件,踢掉一个(结束一个)
  • 不剥夺,tryLock,加个超时时间,抢不到释放资源

分布式锁,可以用

  • DB(Mysql),
  • redis的ex nx,
  • zookeeper,
  • etcd实现分布式锁

DB分布式锁

  • 1、根据业务字段生成transaction_id,并线程安全的创建锁资源
  • 2、根据transaction_id申请锁
  • 3、释放锁

进程内的线程可以基于obj来实现同步。obj在这里可以理解为一个锁对象。

如果线程要进入synchronized代码块里,必须先持有obj对象上的锁。

这种锁是JAVA里面的内置锁,创建的过程是线程安全的。那么借助DB,如何保证创建锁的过程是线程安全的呢?

可以利用DB中的UNIQUE KEY特性,一旦出现了重复的key,由于UNIQUE KEY的唯一性,会抛出异常的。

在JAVA里面,是SQLIntegrityConstraintViolationException异常。

微信 支付宝
CPU占用过高排查
分布式事务

← CPU占用过高排查 分布式事务→

最近更新
01
1637. 两点之间不包含任何点的最宽垂直区域 Java
06-26
02
1636. 按照频率将数组升序排序 Java
06-26
03
1638. 统计只差一个字符的子串数目 Java
06-26
更多文章>
Theme by Vdoing | Copyright © 2019-2025 JavaInterview.cn
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式