cari

Rumah  >  Soal Jawab  >  teks badan

java - ReentrantLock和Disegerakkan

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.

天蓬老师天蓬老师2748 hari yang lalu824

membalas semua(2)saya akan balas

  • 仅有的幸福

    仅有的幸福2017-05-17 10:05:59

    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.

    balas
    0
  • ringa_lee

    ringa_lee2017-05-17 10:05:59

    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.

    balas
    0
  • Batalbalas