java - ReentrantLock和Disegerakkan
天蓬老师
天蓬老师 2017-05-17 10:03:59
0
2
821

Apabila persaingan sumber tidak begitu sengit, prestasi Synchronized lebih baik daripada ReetrantLock, tetapi apabila persaingan sumber sengit, prestasi Synchronized akan menurun berpuluh-puluh kali ganda, tetapi prestasi ReetrantLock boleh kekal normal

(1) Mengapa ini?
(2) Adakah ReentrantLock kunci ringan? Apakah kunci ringan? Saya hanya mendengar nama ini, tetapi saya tidak pernah melihat sebarang pelaksanaan konkrit

Apabila menggunakan disegerakkan, jika ralat berlaku semasa operasi program, pengecualian akan dilemparkan, tetapi tiada kerja pembersihan akan dilakukan. Menggunakan ReentrantLock membolehkan anda mencuba mendapatkan kunci tetapi akhirnya tidak memperolehnya, supaya jika orang lain telah memperoleh kunci itu, anda boleh meninggalkan untuk melaksanakan perkara lain (tetapi apa yang saya mahu lakukan sekarang ialah melakukan operasi tertentu selepas memperoleh kunci itu ), nampaknya tidak masuk akal untuk beralih kepada melaksanakan perkara lain sekarang), dan bukannya menunggu sehingga kunci dilepaskan.

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua(2)
仅有的幸福

Pertama sekali, situasi yang anda nyatakan hanya wujud apabila ReentrantLock pertama kali diperkenalkan dalam Java 1.5 Java 1.6 telah mengubah suai algoritma pelaksanaan Disegerakkan, yang pada asasnya konsisten dengan pelaksanaan ReentrantLock, jadi perbezaan prestasi antara kedua-duanya sudah sangat kecil. .
Mengenai kunci ringan, ini adalah cara untuk meningkatkan prestasi kunci yang diperkenalkan dalam Java 1.6 Ia tergolong dalam tahap JVM dan tiada pelaksanaan khusus.
Jika anda ingin menunggu sehingga kunci dilepaskan, anda boleh menggunakan Lock.lock() untuk mendapatkan kunci Menggunakan Lock.tryLock() cuba mendapatkan kunci dan mungkin tidak dapat mendapatkan kunci.

左手右手慢动作

Boleh difahami secara ringkas bahawa halaman baca dan tulis yang disegerakkan adalah saling eksklusif, tetapi ReentrantLock mempunyai kunci baca dan tulis boleh dikongsi, tetapi kunci tulis adalah saling eksklusif tulis kurang. Prestasinya akan jauh lebih tinggi, tetapi kodnya lebih rumit daripada disegerakkan, dan masalah boleh berlaku dengan mudah jika kawalannya tidak baik.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan