Java のオブジェクト メソッド: wait と Notice の詳細な説明
Java では、オブジェクト メソッド wait と Notice は、スレッド間のコラボレーションと通信のための重要なツールです。これらは、スレッドが他のスレッドの実行を待機したり、適切なタイミングで起動したりするのに役立ちます。この記事では、wait メソッドと Notice メソッドの使用方法を詳しく紹介し、具体的なコード例を示します。
1. wait メソッドの使用
wait メソッドは、他のスレッドが同じオブジェクトの Notice メソッドを呼び出すか、notifyAll メソッドによってウェイクアップされるまで、現在のスレッドを待機状態にするために使用されます。上。 wait メソッドの形式は次のとおりです。
- void wait(): 他のスレッドが起動するまで現在のスレッドを待機させます。
- void wait(long timeout): 現在のスレッドを、指定されたミリ秒数の間、または他のスレッドがウェイクアップするまで待機させます。
- void wait(long timeout, int nanos): 現在のスレッドは、指定されたミリ秒数に指定されたナノ秒数を加えた時間、または他のスレッドがウェイクアップするまで待機します。
wait メソッドを使用する場合は、オブジェクトを確実にロックするために同期されたコード ブロックにこのメソッドを含める必要があります。以下は典型的な例です。
public class WaitNotifyExample { private boolean flag = false; public synchronized void waitForFlag() { try { while (!flag) { wait(); // 当前线程等待 } } catch (InterruptedException e) { e.printStackTrace(); } // 执行其他操作 } public synchronized void setFlag() { flag = true; notify(); // 唤醒正在等待的线程 } }
上の例では、waitForFlag メソッドを呼び出した後、他のスレッドが setFlag メソッドを呼び出してスレッドを起動するまで、スレッドは待機状態になります。
2. notification メソッドの使用
notify メソッドは、待機中のスレッドをウェイクアップするために使用されます。ウェイクアップするスレッドがランダムに選択されます。複数のスレッドが待機している場合は、そのうちの 1 つだけをウェイクアップできます。通知メソッドの使用形式は次のとおりです。
public class NotifyExample { public synchronized void waitForNotify() { try { wait(); // 当前线程等待 } catch (InterruptedException e) { e.printStackTrace(); } // 执行其他操作 } public synchronized void notifyThread() { notify(); // 唤醒一个等待的线程 } }
上記の例では、waitForNotify メソッドを呼び出したスレッドは、他のスレッドが通知スレッド メソッドを呼び出して起動するまで待機状態になります。
3. スレッド間コラボレーションを実現するために待機と通知を使用する
待機メソッドと通知メソッドは、プロデューサー/コンシューマー モデルなどのマルチスレッド コラボレーション シナリオでよく使用されます。
public class ProducerConsumerExample { private LinkedList<Integer> buffer = new LinkedList<>(); private final int MAX_SIZE = 10; public synchronized void produce() { while (buffer.size() == MAX_SIZE) { try { wait(); // 缓冲区已满,生产者线程等待 } catch (InterruptedException e) { e.printStackTrace(); } } buffer.add(1); notifyAll(); // 唤醒等待的消费者线程 } public synchronized void consume() { while (buffer.size() == 0) { try { wait(); // 缓冲区为空,消费者线程等待 } catch (InterruptedException e) { e.printStackTrace(); } } buffer.removeFirst(); notifyAll(); // 唤醒等待的生产者线程 } }
上の例では、バッファがいっぱいになると、コンシューマ スレッドがバッファ内のコンテンツを消費するまで、プロデューサー スレッドは待機状態に入ります。プロデューサーのスレッドを上げます。バッファが空の場合、コンシューマ スレッドは、プロデューサ スレッドが新しい要素を生成してコンシューマ スレッドをウェイクアップするまで待機状態になります。
概要: wait メソッドと Notice メソッドは、Java でのスレッドのコラボレーションと通信のための重要なツールです。これらはマルチスレッド プログラミングにおいて重要な役割を果たします。 wait メソッドとnotify メソッドを適切に使用することで、スレッド間の洗練されたコラボレーションと通信を実現できます。
以上がJava のオブジェクト メソッドの詳細な分析: 待機と通知の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
