Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでの待機とスリープの違い


待つ ()-スレッドはこのモニターの所有権を解放し、notify()メソッドまたはnotifyAll()メソッドのいずれかを呼び出して、このオブジェクトのモニターでウェイクアップするのを待機しているスレッドに別のスレッドが通知するまで待機します。次に、スレッドはモニターの所有権を再取得できるようになるまで待機し、実行を再開します。

睡眠 ()-このメソッドにより、現在実行中のスレッドが指定されたミリ秒数の間スリープ(一時的に実行を停止)します。スレッドはモニターの所有権を失うことはありません。現在のスレッドを指定された時間「実行不可」状態にします。

キー 待つ スリープ
Sr。いいえ。
1
クラス
Wait()メソッドはObjectクラスに属しています
Sleep()メソッドはThreadクラスに属しています
2
ロック解除
Wait()はオブジェクトのロックを解除します
オブジェクトのロックを解除しません
3
呼び出しコンテキスト
Wait()はオブジェクト自体で呼び出すことができます
Sleep()はスレッドで呼び出すことができます
4。
ウェイクアップ状態
オブジェクトからnotify()、notifyAll()を呼び出すまで
少なくとも時間が経過するか、割り込みを呼び出すまで
5
偽のウェイクアップ
プログラムは偽のウェイクアップを取得する可能性があります
偽のウェイクアップは発生しません。

SynchronizedMapの例

synchronized(lockedObject){
   while(condition == true){
      lockedObject.wait() //releases lockedObject lock
   }
   Thread.sleep(100); //puts current thread on Sleep
}

  1. JavaでのArrayListとHashSetの違い

    HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり

  2. Javaのwait()メソッドとsleep()メソッドの違いは?

    sleep()メソッド 静的です スレッドの方法 クラスであり、現在実行中のスレッドを「実行不可」状態に送信できます 一方、 wait() メソッドはインスタンスメソッドであり、スレッドオブジェクトを使用して呼び出しており、そのオブジェクトに対してのみ影響を受けます。 sleep() 時間切れ後のメソッドウェイクアップまたはinterrupt()の呼び出し メソッド、 wait() 時間切れ後のメソッドウェイクアップまたはnotify()の呼び出し またはnotifyAll() 方法。 sleep() メソッドはロックまたはモニートを解放しません r待機中、 wait() メソッドは、待機