Lock
dan Synchronized
kedua-duanya adalah alatan dalam Java yang digunakan untuk menyelesaikan isu keselamatan benang
Synchronized
ialah kata kunci penyegerakan dalam java Lock ialah antara muka yang disediakan dalam pakej J.U.C antara muka ini mempunyai banyak kelas pelaksanaan, termasuk pelaksanaan kunci reentrant seperti ReentrantLock boleh dilaksanakan dalam dua cara Kawal kekuatan kunci
Satu cara ialah mengubah suai kata kunci synchronized
pada tahap kaedah, dan satu lagi ialah mengubah suai pada blok kod Anda boleh mengunci objek melalui synchronized
Kitaran hayat kunci digunakan untuk mengawal skop kunci Jika objek kunci adalah objek statik atau objek kelas, maka kunci adalah kunci global Jika objek kunci adalah objek contoh biasa skop kunci bergantung pada kitaran hayat contoh. Butiran kunci dalam Kunci ditentukan oleh kaedah kunci() dan kaedah unlock()
yang disediakan di dalamnya
Seperti yang ditunjukkan di atas: dalam kaedah kunci( ) dan kaedah unlock()
boleh memastikan keselamatan benang, dan skop kunci bergantung pada kitaran hayat tika Kunci. Kunci lebih fleksibel daripada Synchronized
Kunci boleh memutuskan secara bebas bila hendak mengunci dan bila hendak melepaskan kunci Anda hanya perlu memanggil kunci() dan kaedah buka kunci juga menyediakan kaedah bersaing untuk kunci tryLock()
. Kaedah ini boleh memberitahu utas semasa sama ada utas lain sudah menggunakan kunci dengan mengembalikan benar/salah, bagaimanapun, kerana Disegerakkan ialah kata kunci, ia tidak boleh melaksanakan kaedah tidak menyekat kunci bersaing dikeluarkan secara pasif. Ia akan dikeluarkan hanya selepas pelaksanaan blok kod disegerakkan selesai, atau apabila pengecualian berlaku dalam kod Kunci menyediakan mekanisme untuk kunci adil dan kunci tidak adil sumber diperoleh, utas lain sudah beratur atau menunggu kunci dilepaskan, jadi utas yang sedang bersaing untuk kunci tidak boleh melompat ke baris gilir. Kunci yang tidak adil bermakna tidak kira sama ada terdapat utas beratur untuk menunggu kunci, ia akan cuba bersaing untuk kunci sekali , Disegerakkan hanya menyediakan pelaksanaan kunci yang tidak adil. Synchroized
tidak jauh berbeza dengan kunci dari segi prestasi, tetapi akan terdapat beberapa perbezaan dalam pelaksanaan, yang mana adalah ringan Kunci tahap, kunci berat dan mekanisme peningkatan kunci digunakan untuk mengoptimumkan kunci, manakala Lock menggunakan kunci putaran untuk mencapai pengoptimuman prestasiSynchronized
Atas ialah kandungan terperinci Apakah perbezaan antara Lock dan Synchronized di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!