溫馨提示×

java線程等待的正確實現方法是什么

小樊
100
2024-07-09 09:57:27
欄目: 編程語言

在Java中,線程等待的正確實現方法是使用Object類的wait()notify()notifyAll()方法。這些方法在多線程編程中常用于線程間的同步和通信。

下面是一個簡單的示例,演示了如何使用wait()notify()方法來實現線程等待:

public class ThreadWaitExample {
    public static void main(String[] args) {
        final Object lock = new Object();

        Thread t1 = new Thread(() -> {
            synchronized (lock) {
                try {
                    System.out.println("Thread 1 is waiting...");
                    lock.wait();
                    System.out.println("Thread 1 is notified and resumed.");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        Thread t2 = new Thread(() -> {
            synchronized (lock) {
                System.out.println("Thread 2 is notifying...");
                lock.notify();
            }
        });

        t1.start();
        t2.start();
    }
}

在上面的示例中,線程t1調用lock.wait()方法使自己進入等待狀態,而線程t2在同步塊中調用lock.notify()方法通知t1線程繼續執行。這樣,線程t1就會從等待狀態被喚醒并繼續執行。

需要注意的是,wait()、notify()notifyAll()方法必須在同步塊中被調用,并且必須是用相同的對象作為鎖。否則將會拋出IllegalMonitorStateException異常。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女