Ketika kita berbicara tentang keamanan benang, kita akan memilih metode kunci untuk menyelesaikannya. Jenis kunci di Java dibagi menjadi enam jenis. Dua metode kunci paling umum yang kami temui adalah kunci dan sinkronisasi. Ini juga merupakan pertanyaan prinsip dan mekanisme yang paling sering ditanyakan dalam wawancara. Di bawah ini kami akan menunjukkan kepada Anda pertanyaan wawancara umum di Java. Mari kita lihat apakah Anda bisa menjawab semuanya.
1.Perbedaan antara efek tersinkronisasi pada metode statis dan metode non-statis
Metode non-statis:
Mengunci objek (dapat dipahami sebagai mengunci memori objek ini. Perhatikan bahwa hanya memori ini, objek serupa lainnya akan memiliki kunci memorinya sendiri). Pada saat ini, metode sinkronisasi objek dijalankan di lebih dari satu thread lain (catatan: adalah objeknya) akan menghasilkan saling pengecualian
Metode statis : setara dengan mengunci kelas (*.kelas terletak di area kode, dan metode statis terletak di area statis. Objek yang dihasilkan oleh kelas ini berbagi metode statis ini, sehingga N objek bersaing untuk memori ini),
Saat ini , selama objek yang dihasilkan oleh kelas ini dipanggil, saling pengecualian akan terjadi ketika metode statis ini dipanggil. Artinya, semua objek di kelas ini berbagi kunci.
2.Apa saja jenis kuncinya?
(1) Kunci optimis & kunci pesimistis
(2) Kunci putar & kunci non-putar
(3) Kunci masuk kembali & kunci non-masuk kembali
(4) Kunci tanpa kunci & ringan & kunci bias & kunci kelas berat
(5) Kunci mutex & kunci bersama
(6) Kunci yang adil & kunci yang tidak adil
3. Beberapa metode sinkronisasi thread
modifikasi tersinkronisasi
volatil mengimplementasikan sinkronisasi (hanya visibilitas yang dijamin, bukan atomisitas)
Gunakan variabel lokal ThreadLocal
Gunakan kelas atom ( AtomicInteger, AtomicBoolean...)
Gunakan Kunci
Gunakan kelas kontainer ( BlockingQueue, ConcurrentHashMap)
4. Perbedaan antara mekanisme sinkronisasi dan mekanisme kunci
disinkronkan awalnya menggunakan mekanisme penguncian pesimistis CPU, yaitu thread memperoleh kunci eksklusif. Kunci eksklusif berarti thread lain hanya dapat mengandalkan pemblokiran untuk menunggu thread melepaskan kuncinya.
Kunci menggunakan penguncian optimis. Yang disebut penguncian optimis adalah menyelesaikan suatu operasi tanpa mengunci setiap kali tetapi dengan asumsi tidak ada konflik, jika gagal karena konflik, maka akan dicoba ulang hingga berhasil. Mekanisme penerapan optimis locking adalah operasi CAS (Bandingkan dan Tukar).
5. Bicarakan tentang masalah keamanan benang
Keamanan thread adalah masalah di bidang multi-threading. Keamanan thread secara sederhana dapat dipahami sebagai metode atau instance yang dapat digunakan dalam lingkungan multi-thread tanpa masalah.
Dalam pemrograman multi-thread Java, disediakan berbagai cara untuk mencapai keamanan thread Java:
Cara paling sederhana, gunakan kata kunci Sinkronisasi
Gunakan kelas atom dari paket java.util.concurrent.atomic, seperti AtomicInteger
Menggunakan kunci dari paket java.util.concurrent.locks
Gunakan koleksi ConcurrentHashMap yang aman untuk thread
Gunakan kata kunci yang mudah menguap untuk memastikan visibilitas variabel
Di atas adalah pengantar pertanyaan wawancara tentang kunci di Java. Untuk poin pengetahuan yang belum Anda pahami, Anda harus mencari informasi tepat waktu untuk menyelesaikannya dan memperkuat ingatan Anda tentang konten kunci.