温馨提示×

java wait()方法如何进行超时等待

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

在Java中,wait()方法可以与synchronized关键字和Object.notify()Object.notifyAll()方法一起使用来实现线程间的通信。当你想要让一个线程等待一段时间,然后再继续执行时,可以使用wait(long timeout)方法进行超时等待。

以下是一个简单的示例,展示了如何使用wait(long timeout)方法进行超时等待:

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

        Thread t1 = new Thread(() -> {
            synchronized (lock) {
                System.out.println("Thread 1: Waiting for 5 seconds...");
                try {
                    // 等待5秒,然后继续执行
                    lock.wait(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("Thread 1: Time's up! Continuing execution.");
            }
        });

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

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

在这个示例中,我们创建了两个线程t1t2。线程t1使用wait(5000)方法等待5秒,然后继续执行。线程t2在5秒后调用lock.notify()来唤醒等待的线程t1

注意,wait(long timeout)方法必须在同步块或同步方法中使用,因为它需要持有对象的监视器锁。同时,为了避免虚假唤醒,通常会在循环中调用wait()方法,并在每次唤醒后再次检查条件是否满足。

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

0