Lingkungan operasi tutorial ini: sistem windows7, versi java10, komputer DELL G3.
1. Konsep
Kunci baca-tulis yang masuk kembali . Kunci baca-tulis mempertahankan ReadLock dan WriteLock secara internal. Lapisan bawah masih AQS, tetapi AQS hanya memiliki satu kuantitas status. Bagaimana cara mengontrol membaca dan menulis pada saat yang sama? of state (int) digunakan di sini. Bit mewakili status baca, 16 bit rendah mewakili penulisan, 16 bit tinggi mewakili jumlah thread yang memperoleh kunci baca, dan 16 bit rendah mewakili nomor masuk kembali dari kunci tulis .
2. Prinsip
Diimplementasikan menggunakan antrian CAS+AQS . Ini mendukung kuncian adil dan kuncian tidak adil, dan penerapan keduanya serupa
3. Contoh
kelas publik ReentrantDemo mengimplementasikan Runnable { Kunci kunci = new ReentrantLock(); @Mengesampingkan menjalankan kekosongan publik() { mengatur(); } kumpulan kekosongan publik() { mencoba { kunci.kunci(); System.out.println("atur metode"); mendapatkan(); } tangkapan (Pengecualian e) { e.printStackTrace(); } Akhirnya { lock.unlock();//Akhirnya harus dirilis } } kekosongan publik dapatkan() { mencoba { kunci.kunci(); System.out.println("dapatkan metode"); } tangkapan (Pengecualian e) { e.printStackTrace(); } Akhirnya { mengunci.membuka(); } } public static void main(String[] args) { ReentrantDemo reentrantDemo = ReentrantDemo baru(); Thread baru(reentrantDemo).start(); } }
Di atas adalah tes reentrant java ReentrantLock. Saya yakin setelah membaca keseluruhan artikel, semua orang pada awalnya akan dapat memahami penggunaan ReentrantLock, dan Anda juga dapat memperluas konten terkait kunci reentrant setelah kelas.