仮想スレッドと synchronized Java 21 で仮想スレッドが導入されましたが、仮想スレッドで synchronized を使用すると、そのキャリアスレッド (1 つ以上の仮想スレッドが動作しているプラットフォームスレッド) からアンマウントできず、スタックしてしまい、synchronized を抜けるまでキャリアにピンニング (固定化) され独占されしまいます。仮想スレッドとかプラットフォームスレッドとかを気にせず、どちらでも以前の synchronized と同じように排他制御するには、代わりに ReentrantLock クラスを使用します。 private final ReentrantLock lock = new ReentrantLock(); public void m() { lock.lock(); try { // 共有リソースへのアクセスなど } fin