Java ReentrantReadWriteLock 同一个线程先 readlock, 再 witelock 死锁 - dead lock

Lock downgrading

Reentrancy also allows downgrading from the write lock to a read lock, by acquiring the write lock, then the read lock and then releasing the write lock. However, upgrading from a read lock to the write lock is not possible.

What I Learned

  1. Locking a readlock, then locking the write lock on the same lock creates a deadlock.
  2. Deadlocks created using locks instead of monitors does not appear in thread dumps (like those created by kill -3 (linux) or Ctrl+Break (windows)).
  3. Keep digging and you’ll uncover a nasty incorrect assumption you’ve been making.
  4. -XX:+PrintConcurrentLocks detects some deadlocks
  5. -XX:+PrintConcurrentLocks does not print reentrant locks on stack traces
  6. -XX:+PrintConcurrentLocks does not detect acquiring read then write lock in the same thread deadlock
posted @ 2022-05-11 22:23  tang88seng  阅读(91)  评论(0编辑  收藏  举报