public static void main(String[] args) { Timer timer = new Timer(); TimerTask task = new TimerTask() { private boolean flag = true; @Override public void run() { if (flag) { // 调用function1()函数 function1(); } else { // 调用function2()函数 function2(); } flag = !flag; // 切换标志位 } }; timer.scheduleAtFixedRate(task, 0, 50); } 如果function1需要100ms才执行结束,那么50ms后会等待function1执行完毕吗
时间: 2024-02-10 12:29:14 浏览: 161
不会等待function1执行完毕。根据代码逻辑,每50ms就会执行一次TimerTask中的run方法。如果function1需要100ms才能执行完毕,那么在50ms后,TimerTask会立即调用function2,而不会等待function1执行完毕。所以在这种情况下,function1和function2会交替执行。
相关问题
用java语言实现监控TimerTask的执行状态
好的,这个问题很好,下面是用java语言实现监控TimerTask的执行状态的示例代码:
```java
import java.util.Timer;
import java.util.TimerTask;
public class TimerTaskDemo {
public static void main(String[] args) {
Timer timer = new Timer();
MyTask myTask = new MyTask();
timer.schedule(myTask, 0, 1000);
// 在这里监控MyTask的执行状态
while (true) {
System.out.println(myTask.isRunning() ? "正在执行" : "已经停止");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
static class MyTask extends TimerTask {
private boolean running;
public MyTask() {
super();
running = false;
}
@Override
public void run() {
running = true;
System.out.println("任务执行中...");
running = false;
}
public boolean isRunning() {
return running;
}
}
}
```
这段代码中,我们创建了一个Timer对象,并调用其schedule方法来安排MyTask的执行。然后,在Main方法中使用一个无限循环来监控MyTask的执行状态,直到我们手动停止程序。在MyTask的run方法中,我们将running标志设置为true,表示任务正在执行,然后输出一条信息,最后将running标志设置为false,表示任务已经执行完毕。在MyTask中还定义了一个isRunning方法,用于获取当前任务的执行状态。
希望这段代码可以帮助你解决问题!
java 写一个可触发定时任务,任务结束后自动销毁
Java 的 java.util.Timer 类可以用来实现定时任务。
下面是一个例子:
```
import java.util.Timer;
import java.util.TimerTask;
public class MyTimerTask extends TimerTask {
@Override
public void run() {
// 在这里写你的任务代码
}
}
public class Main {
public static void main(String[] args) {
Timer timer = new Timer();
// 创建一个定时任务,每隔 1000 毫秒执行一次
timer.schedule(new MyTimerTask(), 0, 1000);
}
}
```
这样就可以创建一个可触发定时任务了。要让任务结束后自动销毁,可以在任务代码中检测一下是否需要结束,然后调用 Timer 类的 cancel() 方法停止任务。
例如:
```
import java.util.Timer;
import java.util.TimerTask;
public class MyTimerTask extends TimerTask {
private boolean stop = false;
@Override
public void run() {
if (stop) {
// 任务结束,取消定时任务
cancel();
} else {
// 任务代码
}
}
public void setStop(boolean stop) {
this.stop = stop;
}
}
public class Main {
public static void main(String[] args) {
Timer timer = new Timer();
MyTimerTask task = new MyTimerTask();
timer.schedule(task, 0, 1000);
// 模拟任务结束
task.setStop(true);
}
}
```
这样就可以让任务在结束后自动销毁了。
阅读全文