温馨提示×

java wait()方法如何进行线程同步

小樊
84
2024-12-06 03:10:54
栏目: 编程语言
Java开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Java中,wait()方法是Object类的一个方法,用于让当前线程等待,直到其他线程调用该对象的notify()notifyAll()方法。wait()方法与synchronized关键字一起使用,以实现线程同步。

以下是使用wait()方法进行线程同步的步骤:

  1. 将需要同步的代码块或方法声明为synchronized。这样,只有获得锁的线程才能执行该代码块或方法。
public synchronized void synchronizedMethod() {
    // 同步代码
}

public void synchronizedMethod() {
    synchronized (this) {
        // 同步代码
    }
}
  1. 在同步代码块或方法中,使用wait()方法让当前线程等待。调用wait()方法时,线程会释放对象锁,进入等待状态。为了确保线程安全,需要在wait()方法后使用synchronized关键字重新获取对象锁。
public synchronized void synchronizedMethod() {
    try {
        wait(); // 当前线程等待
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    // 重新获取对象锁并执行同步代码
}
  1. 在需要唤醒等待线程的地方,调用对象的notify()notifyAll()方法。notify()方法会唤醒一个正在等待的线程,而notifyAll()方法会唤醒所有正在等待的线程。
public synchronized void notifyMethod() {
    notify(); // 唤醒一个等待的线程
}

public synchronized void notifyAllMethod() {
    notifyAll(); // 唤醒所有等待的线程
}

注意:在使用wait()notify()notifyAll()方法时,必须确保它们是在同步代码块或方法中调用的,否则会抛出IllegalMonitorStateException异常。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

0