java死锁排查

2020-04-03  本文已影响0人  策马踏清风

多个线程在竞争锁的过程中彼此之间形成堵塞的现象

排查

  1. jstack查看线程以及堆栈信息
  2. jconsole可视化工具,点击线程-检查死锁
  3. VisualVM强大的排查问题工具,可以查看jvm配置、堆快照、线程堆栈信息等

避免死锁

  1. 修正获取锁的顺序
    死锁的根本原因就是获取锁的顺序混乱,将获取锁的代码从业务逻辑中抽离,在公共的方法里获取锁

  2. 超时放弃
    synchronized没有获取到锁就不会放弃,但是Lock接口提供了boolean tryLock(long time, TimeUnit unit) throws InterruptedException的方法,可以按照固定时长等待锁

上一篇 下一篇

猜你喜欢

热点阅读