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

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

巴扎黑
巴扎黑

全員に返信(2)
洪涛

Atomic による同期という意味ですか? 私の個人的な意見は次のとおりです:

  1. Synchronized は ReentrantLock よりも早く Java 標準に組み込まれたため、最初は誰もがそれを使用していました。これは、Java がカプセル化されたミューテックス ロック メカニズムを提供するのと同等であり、ユーザーにとって、ロックがどのようにロック解除されているかに関係なく、同期済みとして宣言するとロック機能を取得できます。

  2. 使いやすさは、粒度が粗く、制御性が低いという諸刃の剣でもあります。たとえば、ロックの取得を待機しているスレッドを中断したり、投票などによってロックを取得したりすることはできません。多くのシナリオは、ミューテックス ロックでは解決できません。
  3. Java はインターフェース java.util.concurrent.locks.Lock を開発し、さまざまなタイプのロックを実装しました。その目的は、さまざまなシナリオのロック要件に適応することであり、ReenTrantLock もその 1 つです。 。
  4. ReenTrantLock もミューテックス ロックですが、Synchronized よりも小さいです
    • ロックを取得できない場合にすぐに返す tryLock など、さらに多くの関数を提供します。
    • よりスケーラブル。スケーラビリティとは、ロック競合が発生したときにスケジューリングに費やす時間が短縮され、スループットが向上し、CPU をより効率的に使用できることを意味します
    • コード内で渡すことができる、より柔軟なロック オブジェクトです。
  5. ただし、ReenTrantLock は Synchronized ほど使い勝手が良くないのは確かで、明示的にロックを解除する必要があり、忘れると面倒です。
いいねを押す +0
Ty80

AtomicAtomicIntegerという意味ですよね?これにより、i++ などの関数をマルチスレッドで実装できるようになります。従来の int タイプ i++ はアトミック操作ではないため、これが最もよく使用されます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!