タグ

ブックマーク / qiita.com/cypher256 (1)

  • Java 21仮想スレッドではsynchronizedの代わりにReentrantLockで同期化する - Qiita

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

    Java 21仮想スレッドではsynchronizedの代わりにReentrantLockで同期化する - Qiita
    bopperjp
    bopperjp 2023/11/13
    すごっ、ついにロックのベストプラクティスも変わるのか。
  • 1