추가 콘텐츠:
스레드 간 동기화 및 통신
문제: 공유 데이터에 액세스할 때 스레드가 서로 간섭할 수 있습니다.
해결책:
동기화된 방법
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(); } }
결론
위 내용은 스레드 간 동기화 및 통신의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!