gpt4 book ai didi

java - 如何在 TimerTask 执行时暂停主线程?

转载 作者:行者123 更新时间:2023-11-30 11:36:16 28 4
gpt4 key购买 nike

package demo;

import java.util.Timer;
import java.util.TimerTask;

public class Demo {
public static Timer timer = new Timer();

static {
MyTask task = new MyTask();
timer.schedule(task, 1000);
}

public static void main(String[] args) {
System.out.println("Begin...");

while (true) {
// do something
}
}

}

class MyTask extends TimerTask {
public void run() {
// do something

MyTask task = new MyTask();
Demo.timer.schedule(task, 1000);
}
}

如何让 main 线程在 TimerTask 进入时暂停,并在它退出时恢复。

最佳答案

创建一个锁并等待 MyTask 设置 isFinished 标志并调用 lock.notify()

static Object lock = new Object();
static boolean isFinished;

public static void main(String[] args) throws Exception {
System.out.println("Begin...");
synchronized (lock) {
while (!isFinished) {
lock.wait();
}
}
}

注意 lock.wait() 需要在 while 循环中,Java 不保证你的线程只会被通知唤醒,参见 Object.wait API

关于java - 如何在 TimerTask 执行时暂停主线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14598425/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com