What I Learned: Locking a readlock, then locking the write lock on the same lock creates a deadlock. Deadlocks created using locks instead of monitors does not appear in thread dumps (like those created by kill -3 (linux) or Ctrl+Break (windows)). Keep digging and you’ll uncover a nasty incorrect assumption you’ve been making. -XX:+PrintConcurrentLocks detects some deadlocks -XX:+PrintConcurrentLocks does not print reentrant locks on stack traces -XX:+PrintConcurrentLocks does not detect ...