Rumah >Java >javaTutorial >Apakah perbezaan antara Lock dan Synchronized di Java

Apakah perbezaan antara Lock dan Synchronized di Java

WBOY
WBOYke hadapan
2023-04-17 19:19:051304semak imbas

1. Dari perspektif fungsi

Lock dan Synchronized kedua-duanya adalah alatan dalam Java yang digunakan untuk menyelesaikan isu keselamatan benang

2 Dari perspektif ciri

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

Apakah perbezaan antara Lock dan Synchronized di Java

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

Apakah perbezaan antara Lock dan Synchronized di Java

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

3. Dari perspektif prestasi,

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam