Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เธรดสื่อสารกันใน Java ได้อย่างไร


การสื่อสารระหว่างเธรด i nvolves การสื่อสารของเธรดระหว่างกัน สามวิธีที่ใช้ในการปรับใช้การสื่อสารระหว่างเธรดใน Java

รอ()

วิธีนี้ทำให้เธรดปัจจุบันปลดล็อค . การดำเนินการนี้จะทำจนกว่าเวลาที่กำหนดหรือเธรดอื่นเรียก notify() หรือ notifyAll() วิธีการสำหรับวัตถุนี้

แจ้ง()

เมธอดนี้ ปลุกเธรดเดียว จากหลายเธรดบนมอนิเตอร์ของอ็อบเจ็กต์ปัจจุบัน การเลือกเธรดเป็นไปตามอำเภอใจ

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