Apa itu Lock(), UnLock(), ReentrantLock(), TryLock() dan Apa bedanya dengan Synchronized Block di Java?]

Diterbitkan: 2020-07-05

Dalam tutorial ini kita akan membahas Lock(), UnLock(), ReentrantLock(), TryLock() dan perbedaannya dengan Synchronized Block di Java.

Jika Anda juga memiliki pertanyaan di bawah ini maka Anda berada di tempat yang tepat.

  • Kunci di Jawa
  • Contoh Kunci Java dan Kunci Konkurensi vs disinkronkan
  • Tutorial Java Concurrency – Reentrant Locks
  • sinkronisasi – Penggunaan kunci/buka kunci yang tepat untuk Java
  • java – Sinkronisasi vs Kunci
  • contoh buka kunci kunci java
  • mekanisme penguncian di java
  • kunci java membuka utas yang berbeda

Mari kita mulai. Pertama mari kita pahami masing-masing istilah ini dan kemudian kita akan membahas contoh kerjanya.

Kunci():

java.util.concurrent.locks . Kunci adalah mekanisme sinkronisasi utas seperti blok yang disinkronkan kecuali kunci bisa lebih canggih daripada blok tersinkronisasi Java. Ini adalah antarmuka dan kelas yang menyediakan kerangka kerja untuk mengunci dan menunggu kondisi yang berbeda dari sinkronisasi dan monitor bawaan.

Membuka kunci():

UnLock() melepaskan kunci pada Object.

ReentrantLock():

ReentrantLock dimiliki oleh utas yang terakhir berhasil mengunci, tetapi belum membukanya. lock pemanggil utas akan kembali, berhasil memperoleh kunci, ketika kunci tidak dimiliki oleh utas lain. Metode akan segera kembali jika utas saat ini sudah memiliki kunci.

Kunci Coba():

TryLock() memperoleh kunci hanya jika itu gratis pada saat pemanggilan.

Tip-1

Jika Anda hanya mengunci objek, saya lebih suka menggunakan synchronized.

Sedangkan dengan disinkronkan, sangat jelas dan tidak mungkin salah:

Contoh Detail:

  1. Buat kelas: CrunchifyLockTutorial.java
  2. Buat kelas dalam: Perusahaan dan CrunchifyLoop
  3. Dari Main buat dua objek kelas Perusahaan
  4. Mulai loop utas untuk 10 pada objek itu
  5. Saat Company1 berbicara dengan Company2 – ia mengunci sebuah objek. Jika pada saat yang sama – jika Company2 ingin berbicara dengan Company1 maka dikatakan – Bertentangan – Kunci sudah ada. (Kedua perusahaan sudah dalam pembicaraan).

Keluaran:

Tip-2

Anda dapat mencapai semua yang dilakukan utilitas di java.util.concurrent dengan primitif tingkat rendah seperti synchronized , volatile , atau wait .