作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!