java - 面试题:ReentrantLock和Atomic使用场景
巴扎黑
巴扎黑 2017-04-18 09:47:12
0
2
338

在面试的时候,面试官提出了让比较ReentrantLock和Atomic两者的适用场景,欢迎各路大神前来解答。

巴扎黑
巴扎黑

membalas semua(2)
洪涛

Adakah anda maksudkan Synchronized by Atomic? Pendapat peribadi saya ialah:

  1. Disegerakkan memasuki standard Java lebih awal daripada ReentrantLock, jadi semua orang menggunakannya pada mulanya. Ia bersamaan dengan Java yang menyediakan mekanisme kunci mutex terkapsul Bagi pengguna, mengisytiharkannya sebagai disegerakkan boleh memperoleh keupayaan kunci, tanpa mengira cara kunci dibuka

  2. .
  3. Mudah digunakan juga merupakan pedang bermata dua. Synchronized mempunyai butiran yang lebih kasar dan kawalan yang lemah. Sebagai contoh, anda tidak boleh mengganggu urutan yang sedang menunggu untuk mendapatkan kunci, anda juga tidak boleh mendapatkan kunci melalui pengundian, dsb. Banyak senario tidak boleh diselesaikan dengan kunci mutex.

  4. Jadi Java telah membangunkan antara muka java.util.concurrent.locks.Lock dan melaksanakan pelbagai jenis kunci Tujuannya adalah untuk menyesuaikan diri dengan keperluan kunci dalam pelbagai senario, ReenTrantLock adalah salah satu daripadanya .

  5. ReenTrantLock juga merupakan kunci mutex, tetapi ia lebih kecil daripada Disegerakkan

    • Menyediakan lebih banyak fungsi, seperti tryLock, kembali serta-merta jika kunci tidak dapat diperoleh, dsb.

    • Lebih berskala. Kebolehskalaan bermakna anda boleh menghabiskan lebih sedikit masa untuk menjadualkan apabila berlaku pertikaian kunci, meningkatkan daya pengeluaran dan menggunakan CPU dengan lebih cekap

    • Ia sangat boleh diprogramkan Ia adalah objek kunci yang boleh dihantar dalam kod, yang lebih fleksibel

    • .
  6. Walau bagaimanapun, ReenTrantLock pastinya tidak semudah digunakan sebagai Disegerakkan Ia perlu dibuka kuncinya dengan jelas, dan ia akan menyusahkan jika anda melupakannya

  7. .
Ty80

Atomic bermaksud AtomicInteger, bukan? Ini boleh memastikan fungsi seperti i++ boleh dilaksanakan di bawah multi-threading Ini sepatutnya yang paling banyak digunakan, kerana jenis int tradisional i++ bukan operasi atom.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!