wait()、notify()、および notifyAll() メソッドは、Java の同時実行モデルに不可欠です。これらは、Java のクラス階層のルートである Object クラスに属します。これは、Java のすべてのクラスが Object クラスからこれらのメソッドを継承することを意味します。
Object クラスは、Java のすべてのクラスのスーパークラスです。 toString()、equals()、hashCode() など、すべてのクラスが継承する基本メソッドのセットを提供します。 wait()、notify()、および notifyAll() メソッドもこのクラスの一部であり、スレッドが通信してアクティビティを調整できるようにします。
これらのメソッドがどのように機能するかを理解するために、いくつかの実際的な例を見てみましょう。
これらのメソッドの使用法を示す簡単な例を次に示します:
class SharedResource { private boolean available = false; public synchronized void consume() throws InterruptedException { while (!available) { wait(); // Wait until the resource is available } // Consume the resource System.out.println("Resource consumed."); available = false; notify(); // Notify that the resource is now unavailable } public synchronized void produce() { // Produce the resource available = true; System.out.println("Resource produced."); notify(); // Notify that the resource is available } } public class Main { public static void main(String[] args) { SharedResource resource = new SharedResource(); Thread producer = new Thread(() -> { try { while (true) { Thread.sleep(1000); // Simulate time to produce resource.produce(); } } catch (InterruptedException e) { e.printStackTrace(); } }); Thread consumer = new Thread(() -> { try { while (true) { resource.consume(); Thread.sleep(2000); // Simulate time to consume } } catch (InterruptedException e) { e.printStackTrace(); } }); producer.start(); consumer.start(); } }
上記の例:
プロデューサーとコンシューマーの操作を示す次の出力が表示されます。
Resource produced. Resource consumed. ...
この出力は、wait()、notify()、および notifyAll() がプロデューサーとコンシューマーの対話をどのように調整するかを示しています。
wait()、notify()、および notifyAll() メソッドがどのクラスに属し、どのように機能するかを理解することで、効果的に管理できます。 Java アプリケーションのスレッド間通信。これらのメソッドは、スレッドが連携してリソースを効率的に共有するために不可欠です。
ご質問がある場合、またはさらに詳しい説明が必要な場合は、お気軽に以下にコメントを残してください。
詳細については、 で投稿をご覧ください: wait()、notify()、および NoticeAll() メソッドはどのクラスに属しますか?
以上がwait()、notify()、およびnotifyAll()メソッドはどのクラスに属しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。