84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
リソースの競合がそれほど激しくない場合、Synchronized のパフォーマンスは ReetrantLock よりも優れています。ただし、リソースの競合が激しい場合、Synchronized のパフォーマンスは数十分の 1 に低下しますが、ReetrantLock のパフォーマンスは通常のままである可能性があります。
(2) ReentrantLock は軽量ロックですか?軽量ロックとは何ですか?名前だけは聞いたことがあるが、具体的な実装は見たことがない
欢迎选择我的课程,让我们一起见证您的进步~~
まず第一に、あなたが言及した状況は、ReentrantLock が最初に Java 1.5 に導入されたときにのみ存在しました。Java 1.6 では、基本的に ReentrantLock の実装と一致する Synchronized の実装アルゴリズムが変更されているため、2 つの間のパフォーマンスの差はすでに非常に大きくなっています。小さい。 軽量ロックに関しては、これは Java 1.6 で導入されたロックのパフォーマンスを向上させる方法であり、JVM レベルに属しており、特定の実装はありません。 ロックが解放されるまで待ちたい場合は、Lock.lock()を使用してロックを取得できます。Lock.tryLock()を使用するとロックを取得しようとしているため、ロックを取得できない場合があります。
同期された読み取りページと書き込みページは相互に排他的であることが簡単に理解できますが、ReentrantLock は読み取りロックと書き込みロックを共有できますが、ここから見ると、ReentrantLock は読み取りと書き込みのロックを共有します。書き込み量を減らすとパフォーマンスは大幅に向上しますが、コードは同期よりも複雑になり、制御が適切でないと問題が発生しやすくなります。
まず第一に、あなたが言及した状況は、ReentrantLock が最初に Java 1.5 に導入されたときにのみ存在しました。Java 1.6 では、基本的に ReentrantLock の実装と一致する Synchronized の実装アルゴリズムが変更されているため、2 つの間のパフォーマンスの差はすでに非常に大きくなっています。小さい。
軽量ロックに関しては、これは Java 1.6 で導入されたロックのパフォーマンスを向上させる方法であり、JVM レベルに属しており、特定の実装はありません。
ロックが解放されるまで待ちたい場合は、Lock.lock()を使用してロックを取得できます。Lock.tryLock()を使用するとロックを取得しようとしているため、ロックを取得できない場合があります。
同期された読み取りページと書き込みページは相互に排他的であることが簡単に理解できますが、ReentrantLock は読み取りロックと書き込みロックを共有できますが、ここから見ると、ReentrantLock は読み取りと書き込みのロックを共有します。書き込み量を減らすとパフォーマンスは大幅に向上しますが、コードは同期よりも複雑になり、制御が適切でないと問題が発生しやすくなります。