阅读量:3
在Java中,wait()方法可以与synchronized关键字和Object.notify()或Object.notifyAll()方法一起使用,以便在等待某个条件满足时唤醒线程。为了设置超时,您可以使用Thread.sleep()方法在循环中检查条件是否满足。以下是一个示例:
public class WaitWithTimeoutExample {
private static final Object lock = new Object();
private static boolean conditionMet = false;
public static void main(String[] args) {
Thread thread = new Thread(() -> {
synchronized (lock) {
try {
System.out.println("Waiting for condition to be met...");
while (!conditionMet) { // 使用循环检查条件是否满足
lock.wait(1000); // 设置超时时间为1000毫秒(1秒)
}
System.out.println("Condition is met. Exiting thread.");
} catch (InterruptedException e) {
System.out.println("Thread was interrupted.");
}
}
});
thread.start();
try {
Thread.sleep(2000); // 让主线程等待2秒,以便子线程有机会执行
} catch (InterruptedException e) {
System.out.println("Main thread was interrupted.");
}
synchronized (lock) {
conditionMet = true; // 设置条件以满足
lock.notify(); // 唤醒等待的线程
}
}
}
在这个示例中,我们设置了一个1秒的超时时间,如果在这个时间内条件没有满足,线程将退出等待。请注意,这个示例仅用于演示目的,实际应用中可能需要根据具体需求进行调整。
以上就是关于“java wait方法如何设置超时”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm