Rumah > Soal Jawab > teks badan
在学习lock与synchronize的区别时,看到这样一句话:“ lock更灵活,可以自由定义多把锁的枷锁解锁顺序(synchronized要按照先加的后解顺序)”。请问这里:
1.lock的自由定义多把锁的枷锁解锁顺序怎么理解?
2.synchronized要按照先加的后解顺序怎么理解?
谢谢各位!
高洛峰2017-04-18 10:51:35
Kunci ialah antara muka, dan pelaksanaan yang paling biasa digunakan ialah ReentrantLock Salah satu fleksibilitinya ialah ia boleh menetapkan parameter adil.
ReentrantLock dengan synchronized dan fair=false tidak dapat menentukan susunan penguncian. Dalam erti kata lain, benang A, B, dan C semuanya mengunci objek Kali pertama mereka cuba mengunci ialah A, kemudian B, dan akhirnya C. Kemudian apabila A membuka kunci objek, ia tidak dapat ditentukan sama ada B atau C akan mengunci. objek seterusnya.
Jika anda menggunakan fair=true ReentrantLock (kunci adil), keadaan ditentukan: apabila A membuka kunci objek, memandangkan B cuba mengunci objek sebelum C, B mesti menguncinya seterusnya, dan hanya apabila B membuka kunci, gilirannya kepada C.
ringa_lee2017-04-18 10:51:35
new lock1
new lock2
lock1.lock();
lock2.lock();
...
lock2.unlock();
lock1.unlock();
Pengunci dan buka kunci Lock
dilaksanakan pada tahap semantik java, dan tidak ada hubungan yang diperlukan antara kunci
synchronized(obj1){
synchronized(obj2){
...
}
}
synchronized
buka kunci dilaksanakan oleh JVM Ia akan membuka kunci sendiri selepas melaksanakan blok synchronized
Semua akan dibuka dalam susunan bersarang synchronized
.