Java

java wait()方法需要同步吗

小樊
83
2024-12-06 03:58:53
栏目: 编程语言

在Java中,wait()方法通常与synchronized关键字一起使用,以确保线程安全。当一个线程调用一个对象的wait()方法时,它会释放该对象的锁并进入等待状态。其他线程必须获得该对象的锁并调用notify()notifyAll()方法才能唤醒等待的线程。

以下是一个简单的示例:

public class SharedResource {
    private boolean resourceReady = false;

    public synchronized void waitForResource() throws InterruptedException {
        while (!resourceReady) {
            wait(); // 等待资源准备好
        }
        // 资源已准备好,可以继续执行
    }

    public synchronized void setResourceReady() {
        resourceReady = true;
        notify(); // 唤醒等待的线程
    }
}

在这个示例中,waitForResource()方法使用synchronized关键字确保在同一时间只有一个线程可以访问它。当资源还未准备好时,线程会调用wait()方法并释放锁。其他线程可以通过调用setResourceReady()方法来设置资源为准备好状态,并通过notify()方法唤醒等待的线程。

0
看了该问题的人还看了