用Java实现创建一个定时器,每20分钟触发一次。当定时器触发时,启动一个线程,该线程循环遍历所有任务,如果任务未在执行,则启动该任务的线程执行任务。如果任务已在执行,则跳过该任务。每个任务的线程执行完任务后,将任务标记为未执行状态
时间: 2023-04-03 12:03:34 浏览: 140
可以使用Java的Timer和TimerTask类来实现定时器功能。以下是示例代码:
```
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer {
private Timer timer;
private Task[] tasks;
public MyTimer(Task[] tasks) {
this.tasks = tasks;
timer = new Timer();
timer.schedule(new MyTimerTask(), 0, 20 * 60 * 1000);
}
private class MyTimerTask extends TimerTask {
@Override
public void run() {
for (Task task : tasks) {
if (!task.isRunning()) {
new Thread(task).start();
}
}
}
}
}
class Task implements Runnable {
private boolean running;
@Override
public void run() {
// 执行任务
running = true;
// 标记任务为未执行状态
running = false;
}
public boolean isRunning() {
return running;
}
}
```
在上面的代码中,MyTimer类是定时器类,它接受一个Task数组作为参数。MyTimer类使用Java的Timer类来实现定时器功能,每20分钟触发一次。当定时器触发时,MyTimer类会启动一个线程,该线程循环遍历所有任务,如果任务未在执行,则启动该任务的线程执行任务。如果任务已在执行,则跳过该任务。每个任务的线程执行完任务后,将任务标记为未执行状态。
Task类是一个任务类,它实现了Runnable接口。在run方法中,我们可以编写具体的任务逻辑。Task类有一个isRunning方法,用于判断任务是否在执行。
阅读全文