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(), inform() 및 informAll() 메서드는 어느 클래스에 속합니까?
위 내용은 wait(), inform() 및 informAll() 메소드는 어떤 클래스에 속합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!