스레드 간 통신 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