Adakah anda maksudkan Synchronized by Atomic? Pendapat peribadi saya ialah:
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
.
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.
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 .
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
.
Walau bagaimanapun, ReenTrantLock pastinya tidak semudah digunakan sebagai Disegerakkan Ia perlu dibuka kuncinya dengan jelas, dan ia akan menyusahkan jika anda melupakannya
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.
Adakah anda maksudkan Synchronized by Atomic? Pendapat peribadi saya ialah:
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
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.
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 .
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
Walau bagaimanapun, ReenTrantLock pastinya tidak semudah digunakan sebagai Disegerakkan Ia perlu dibuka kuncinya dengan jelas, dan ia akan menyusahkan jika anda melupakannya
Atomic
bermaksudAtomicInteger
, bukan? Ini boleh memastikan fungsi sepertii++
boleh dilaksanakan di bawah multi-threading Ini sepatutnya yang paling banyak digunakan, kerana jenisint
tradisionali++
bukan operasi atom.