Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 스레드는 어떻게 서로 통신합니까?

<시간/>

스레드 간 통신 i 스레드 간의 통신을 포함합니다. Java에서 스레드 간 통신을 구현하는 데 사용되는 세 가지 방법

대기()

이 방법을 사용하면 현재 스레드가 잠금을 해제합니다. . 이는 특정 시간이 경과하거나 다른 스레드가 notify()를 호출할 때까지 수행됩니다. 또는 notifyAll() 이 개체에 대한 메서드입니다.

알림()

이 방법은 단일 스레드를 깨웁니다. 현재 개체의 모니터에 있는 여러 스레드 중 스레드 선택은 임의적입니다.

모든 알림()

이 방법은 모든 스레드를 깨웁니다. 현재 개체의 모니터에 있습니다.

예시

class BankClient {
   int balAmount = 5000;
   synchronized void withdrawMoney(int amount) {
      System.out.println("Withdrawing money");
      balAmount -= amount;
      System.out.println("The balance amount is: " + balAmount);
   }
   synchronized void depositMoney(int amount) {
      System.out.println("Depositing money");
      balAmount += amount;
      System.out.println("The balance amount is: " + balAmount);
      notify();
   }
}
public class ThreadCommunicationTest {
   public static void main(String args[]) {
      final BankClient client = new BankClient();
      new Thread() {
         public void run() {
            client.withdrawMoney(3000);
         }
      }.start();
      new Thread() {
         public void run() {
           client.depositMoney(2000);
         }
      }.start();
   }
}

출력

Withdrawing money
The balance amount is: 2000
Depositing money
The balance amount is: 4000