在 Java 里,while 循环本身没有“暂停”这个语法,通常我们通过条件控制、sleep、或 wait/notify 等方式来实现“暂停”或“等待”的效果。下面按常见场景给你说明。
Thread.sleep()(定时暂停)如果你是让 while 循环每隔一段时间执行一次,这是最常见的方式。
while (true) {
System.out.println("运行中...");
try {
Thread.sleep(1000); // 暂停 1000 毫秒(1 秒)
} catch (InterruptedException e) {
e.printStackTrace();
}
}
✅ 适合:定时任务、轮询、动画、心跳检测等
⚠️ 注意:sleep 不会释放锁(如果 synchronized 中)
可以用一个 boolean 变量来控制循环是否继续。
boolean running = true;
while (running) {
System.out.println("正在运行");
// 某个条件触发暂停
if (某个条件) {
running = false;
}
}
或者在循环里“跳过执行”:
boolean paused = false;
while (true) {
if (!paused) {
System.out.println("执行任务");
}
if (某个条件) {
paused = true;
}
}
✅ 适合:游戏、状态机、控制流程
wait() / notify()(线程间暂停 / 恢复)如果你是要真正暂停线程,并在之后恢复,这是正确方式。
final Object lock = new Object();
boolean paused = false;
// 线程中
while (true) {
synchronized (lock) {
while (paused) {
lock.wait(); // 线程暂停
}
}
System.out.println("执行中");
}
// 暂停
paused = true;
// 恢复
synchronized (lock) {
paused = false;
lock.notify();
}
✅ 适合:多线程、生产者/消费者、复杂控制
⚠️ 必须在 synchronized 中使用
如果只是想结束循环:
while (true) {
if (条件) {
break; // 立即停止 while 循环
}
}
| 需求 | 推荐方式 |
|---|---|
| 定时执行 | Thread.sleep() |
| 条件控制是否继续 | boolean 变量 |
| 暂停 / 恢复线程 | wait() / notify() |
| 直接结束循环 | break |
如果你能具体说一下使用场景(比如:游戏循环、服务端轮询、监听用户输入、GUI 程序),我可以给你一个更贴切的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。