ホームページ  >  記事  >  Java  >  Javaのwaitとsleepの違いは何ですか?

Javaのwaitとsleepの違いは何ですか?

青灯夜游
青灯夜游オリジナル
2019-12-27 15:14:064314ブラウズ

Javaのwaitとsleepの違いは何ですか?

sleep:

sleep メソッドは Thread クラスのメソッドに属します。これは、スレッドをスリープ状態にして待機することを意味します。自動的にウェイクアップするまでに一定の時間がかかります。実行可能状態に入るには、スレッド スケジューリング メカニズムもスレッドの実行を再開するのに時間がかかるため、すぐには実行状態にはなりません。スレッド オブジェクトが sleep メソッドを呼び出した後、保持しているすべてのオブジェクト ロックが解放されるわけではないため、他のプロセス オブジェクトの操作には影響しません。ただし、スリープ プロセス中に、その中断() が他のオブジェクトによって呼び出され、InterruptedException 例外が発生する可能性があります。プログラムがこの例外をキャッチしない場合、スレッドは異常終了し、TERMINATED 状態になります。プログラムがこの例外をキャッチした場合、 , 例外が発生した場合、プログラムは catch ステートメント ブロック (場合によっては、finally ステートメント ブロック) と後続のコードの実行を続行します。

#wait:

wait は Object に属するメンバー メソッドです。オブジェクトが wait メソッドを呼び出した後は、notify() メソッドとnotifyAll() メソッドを使用する必要があります。プロセスをウェイクアップします。スレッドが 1 つ以上のオブジェクトの同期ロックを所有している場合、wait() を呼び出した後、スレッドは wait() メソッドが呼び出されたオブジェクトに限定されず、保持しているすべての同期リソースを解放します。 。 wait() メソッドは、待機プロセス中に割り込み() メソッドを呼び出す他のオブジェクトによって生成されることもあります。

#sleep メソッドと wait メソッドの違いは次のとおりです。 ##● Sleep は Thread クラスから取得され、wait は Object クラスから取得されます。

● sleep メソッドはロックを解放しません。wait メソッドはロックを解放し、他のスレッドが同期制御ブロックまたはメソッドを使用できるようにします

#●wait、notify、notifyAll は同期制御メソッドまたは同期制御でのみ使用できますブロック、スリープはどこでも使用できます

● スリープは例外をキャッチする必要がありますが、待機、通知、通知すべては例外をキャッチする必要はありません

推奨される学習:

Java ビデオ チュートリアル

以上がJavaのwaitとsleepの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。