Dalam Java, kata kunci disegerakkan digunakan untuk melindungi bahagian kritikal kod daripada diakses secara serentak. Ia memastikan bahawa hanya satu utas pada satu masa boleh melaksanakan kaedah atau blok yang disegerakkan. Walau bagaimanapun, kelakuan kaedah statik disegerakkan berbeza sedikit daripada kaedah contoh, kerana kaedah statik tidak mempunyai objek yang berkaitan.
Soalan:
Memandangkan kaedah statik tidak mempunyai objek yang berkaitan, bagaimanakah kata kunci yang disegerakkan mempengaruhinya? Secara khusus, adakah ia mengunci kelas dan bukannya objek?
Jawapan:
Ya. Apabila kaedah statik disegerakkan digunakan, ia memperoleh monitor yang dikaitkan dengan objek Kelas untuk kelas kaedah tersebut. Ini bermakna berbilang utas yang cuba melaksanakan kaedah disegerakkan statik yang sama perlu memperoleh kunci pada kelas sebelum meneruskan.
Butiran:
Seperti yang dinyatakan dalam Bahasa Java Spesifikasi §8.4.3.6, "Kaedah Disegerakkan":
Untuk kaedah kelas (statik), monitor yang dikaitkan dengan objek Kelas untuk kelas kaedah digunakan.
Ini memastikan statik disegerakkan kaedah boleh digunakan untuk melindungi sumber yang berkaitan dengan kelas itu sendiri, dan bukannya kejadian tertentu. Contohnya, jika kaedah statik mengakses pembolehubah kiraan dikongsi dalam kelas, ia boleh disegerakkan untuk menghalang berbilang urutan daripada mengaksesnya secara serentak dan berpotensi mewujudkan ketidakkonsistenan data.
Atas ialah kandungan terperinci Adakah Kaedah Statik Disegerakkan Mengunci pada Objek Kelas di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!