== NAIVE == findDeadlockedThreads: DEADLOCK transfer-A-to-B is WAITING on java.util.concurrent.locks.ReentrantLock$NonfairSync owned by transfer-B-to-A transfer-B-to-A is WAITING on java.util.concurrent.locks.ReentrantLock$NonfairSync owned by transfer-A-to-B after interrupting both threads: total balance = 2000 == ORDERED == both transfers completed, no deadlock to detect balances A=930 B=1070 == TRY_LOCK == both transfers completed, no deadlock to detect balances A=930 B=1070 retries>0=true == NAIVE on virtual threads == thread states: [WAITING, WAITING] findDeadlockedThreads: none (virtual threads are invisible to it)