1. Perbezaan antara kesan disegerakkan pada kaedah statik dan kaedah bukan statik
Kaedah bukan statik:
Kunci objek (boleh difahami sebagai mengunci objek Memori dikunci (perhatikan bahawa ia hanya memori ini, objek lain dari jenis yang sama akan mempunyai kunci memori mereka sendiri Pada masa ini, jika kaedah penyegerakan objek dilaksanakan dalam lebih daripada satu utas lain (nota: ia adalah objek), pengecualian bersama akan berlaku
Kaedah statik: bersamaan dengan mengunci kelas (*.class terletak dalam kawasan kod, dan kaedah statik terletak dalam kawasan statik. Objek yang dihasilkan oleh kelas ini berkongsi kaedah statik ini, jadi N objek bersaing untuk memori ini),
Pada masa ini, selagi objek yang dihasilkan oleh kelas ini dipanggil, pengecualian bersama akan berlaku apabila kaedah statik ini dipanggil. Iaitu, semua objek kelas ini berkongsi kunci.
2. Apakah jenis kunci
(1) Kunci optimis & kunci pesimis
(2) Kunci putaran & kunci bukan putaran
(3) Kunci masuk semula & kunci bukan masuk semula
(4) Kunci tanpa kunci & ringan & kunci berat sebelah & kunci berat
(5) Kunci Pengecualian Interaksi & kunci kongsi
(6) Kunci adil & kunci tidak adil
3 Beberapa cara penyegerakan benang
pengubahsuaian disegerakkan
Meruap mencapai penyegerakan ( hanya keterlihatan dijamin, bukan atomicity)
Gunakan pembolehubah setempat ThreadLocal
Gunakan kelas atom (AtomicInteger, AtomicBoolean...)
Gunakan Kunci
Gunakan kelas kontena (BlockingQueue, ConcurrentHashMap)
4 Perbezaan antara mekanisme disegerakkan dan kunci
mekanisme penguncian pesimis CPU yang digunakan secara asal, iaitu, benang memperoleh eksklusif. kunci. Kunci eksklusif bermakna bahawa benang lain hanya boleh bergantung pada penyekatan untuk menunggu benang melepaskan kunci.
Kunci menggunakan penguncian optimistik. Apa yang dipanggil penguncian optimistik adalah untuk menyelesaikan operasi tanpa mengunci setiap kali tetapi menganggap bahawa tidak ada konflik Jika ia gagal disebabkan konflik, ia akan dicuba semula sehingga berjaya. Mekanisme yang dilaksanakan oleh penguncian optimistik ialah operasi CAS (Bandingkan dan Tukar).
5. Bercakap tentang isu keselamatan benang
Keselamatan benang adalah isu dalam bidang multi-threading boleh difahami secara ringkas sebagai kaedah atau contoh yang boleh digunakan dalam pelbagai rangkaian tanpa masalah.
Dalam pengaturcaraan berbilang benang Java, pelbagai cara untuk mencapai keselamatan benang Java disediakan:
Cara paling mudah ialah menggunakan kata kunci Penyegerakan
Gunakan java.util kelas daripada pakej concurrent.atomic seperti AtomicInteger
gunakan kunci daripada pakej java.util.concurrent.locks
gunakan koleksi selamat benang ConcurrentHashMap
gunakan perkataan kunci yang tidak menentu , memastikan keterlihatan berubah
Atas ialah kandungan terperinci Contoh analisis soalan temuduga tentang penguncian di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!