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