java - lock与synchronize的解锁顺序问题?
怪我咯
怪我咯 2017-04-18 10:49:35
0
2
762

在学习lock与synchronize的区别时,看到这样一句话:“ lock更灵活,可以自由定义多把锁的枷锁解锁顺序(synchronized要按照先加的后解顺序)”。请问这里:

1.lock的自由定义多把锁的枷锁解锁顺序怎么理解?
2.synchronized要按照先加的后解顺序怎么理解?

谢谢各位!

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(2)
小葫芦

Lock はインターフェースであり、最も一般的に使用される実装は ReentrantLock です。その柔軟性の 1 つは、公平なパラメーターを設定できることです。

synchronized および Fair=false を指定した ReentrantLock では、ロック順序を決定できません。つまり、スレッド A、B、C はすべて、最初に A、次に B、最後に C でオブジェクトをロックしようとします。その後、A がオブジェクトのロックを解除するときに、B と C のどちらがロックするかを決定できません。次にオブジェクト。

Fair=true で ReentrantLock を使用する場合、状況が決まります。A がオブジェクトのロックを解除すると、B が C の前にオブジェクトをロックしようとするため、B は次にオブジェクトをロックする必要があり、B がロックを解除した場合にのみ C の番になります。

いいねを押す +0
左手右手慢动作

リーリー

Lock は Java セマンティック レベルで実装されており、ロック間に必要な関係はありませんLock的加解锁是在java语义层面上实现的,锁之间没有必然关系

new lock1
new lock2

lock1.lock();
lock2.lock();
...
lock2.unlock();
lock1.unlock();

synchronized加解锁是由JVM来实现,在执行完synchronized块后自行解锁,所有会按照synchronized リーリー

synchronized のロック解除は、synchronized ブロックの実行後にロックが解除されます。synchronized のネスト順にすべてロックが解除されます。 🎜
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート