>Java >java지도 시간 >스레드 간 동기화 및 통신

스레드 간 동기화 및 통신

Patricia Arquette
Patricia Arquette원래의
2024-11-27 07:37:09570검색

추가 콘텐츠:

스레드 간 동기화 및 통신
문제: 공유 데이터에 액세스할 때 스레드가 서로 간섭할 수 있습니다.

해결책:
동기화된 방법

synchronized void synchronizedMethod() {
    // Código sincronizado
}

동기화된 블록:

synchronized (this) {
    // Código sincronizado
}

소통 예시:

wait(), inform() 및 informAll()을 사용한 스레드 간 통신:

class SharedResource {
    private boolean flag = false;

    synchronized void produce() {
        while (flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Producing...");
        flag = true;
        notify();
    }

    synchronized void consume() {
        while (!flag) {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("Consuming...");
        flag = false;
        notify();
    }
}

public class ThreadCommunication {
    public static void main(String[] args) {
        SharedResource resource = new SharedResource();

        Thread producer = new Thread(resource::produce);
        Thread consumer = new Thread(resource::consume);

        producer.start();
        consumer.start();
    }
}

결론

  • Java의 멀티스레드 프로그래밍을 사용하면 특히 멀티코어 시스템에서 더욱 효율적인 애플리케이션을 만들 수 있습니다.
  • 동기화를 사용하여 공유 리소스에 대한 액세스를 올바르게 관리하는 것이 중요합니다.
  • Thread 클래스 메서드와 Runnable 인터페이스는 멀티태스킹 작업을 위한 강력한 도구입니다.

Sincronização e Comunicação entre Threads

위 내용은 스레드 간 동기화 및 통신의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.