.
This commit is contained in:
parent
52ade85767
commit
54cff118c3
@ -15,6 +15,8 @@ public abstract class AbstractTask implements Task {
|
|||||||
private boolean isComplete;
|
private boolean isComplete;
|
||||||
private long startTime = System.currentTimeMillis();
|
private long startTime = System.currentTimeMillis();
|
||||||
|
|
||||||
|
private TimerExecutor timerExecutor;
|
||||||
|
|
||||||
public AbstractTask(String name, Scheduled scheduled) {
|
public AbstractTask(String name, Scheduled scheduled) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.scheduled = scheduled;
|
this.scheduled = scheduled;
|
||||||
@ -55,6 +57,15 @@ public abstract class AbstractTask implements Task {
|
|||||||
|
|
||||||
public void setComplete(boolean complete) {
|
public void setComplete(boolean complete) {
|
||||||
isComplete = complete;
|
isComplete = complete;
|
||||||
|
timerExecutor.remove(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TimerExecutor getTimerExecutor() {
|
||||||
|
return timerExecutor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTimerExecutor(TimerExecutor timerExecutor) {
|
||||||
|
this.timerExecutor = timerExecutor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long startTime() {
|
public long startTime() {
|
||||||
|
@ -50,4 +50,8 @@ public interface Task extends Runnable{
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
long startTime();
|
long startTime();
|
||||||
|
|
||||||
|
TimerExecutor getTimerExecutor();
|
||||||
|
|
||||||
|
void setTimerExecutor(TimerExecutor timerExecutor);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package com.lxyer.timer;
|
|||||||
|
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: liangxianyou
|
* @author: liangxianyou
|
||||||
@ -17,10 +18,13 @@ public class TimerExecutor {
|
|||||||
|
|
||||||
public void add(Task ... task){
|
public void add(Task ... task){
|
||||||
for (Task t : task) {
|
for (Task t : task) {
|
||||||
|
t.setTimerExecutor(this);
|
||||||
queue.put(t);
|
queue.put(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void add(Task task, boolean upTime){
|
private void add(Task task, boolean upTime){
|
||||||
|
task.setTimerExecutor(this);
|
||||||
if (upTime) task.nextTime();
|
if (upTime) task.nextTime();
|
||||||
queue.put(task);
|
queue.put(task);
|
||||||
}
|
}
|
||||||
|
@ -22,19 +22,22 @@ public class TimerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void t2() throws InterruptedException {
|
public void t2() throws InterruptedException {
|
||||||
TimerExecutor timerExecutor = new TimerExecutor(1);
|
TimerExecutor timerExecutor = new TimerExecutor(1);
|
||||||
Task t1 = new TaskImpl("a1", new ScheduledExpres("1-40 * * * *"));//1-40,定时每分钟执行
|
//Task t1 = new TaskImpl("a1", new ScheduledExpres("1-40 * * * *"));//1-40,定时每分钟执行
|
||||||
TaskImpl t2 = new TaskImpl("a2", new ScheduledCycle(5000 * 1));
|
TaskImpl t2 = new TaskImpl("a2", new ScheduledCycle(5000 * 1));
|
||||||
|
|
||||||
|
|
||||||
timerExecutor.add(t1, t2);
|
|
||||||
|
//timerExecutor.add(t2);
|
||||||
|
|
||||||
//60s后修改a1 每2s执行一次
|
//60s后修改a1 每2s执行一次
|
||||||
Thread.sleep(1000);
|
//Thread.sleep(1000);
|
||||||
//task = timerExecutor.get("a1");
|
//task = timerExecutor.get("a1");
|
||||||
if (t1 != null){
|
/*if (t1 != null){
|
||||||
t1.setScheduled(new ScheduledCycle(2000 * 1));
|
t1.setScheduled(new ScheduledCycle(2000 * 1));
|
||||||
timerExecutor.add(t1);
|
timerExecutor.add(t1);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Thread.sleep(5000);
|
Thread.sleep(5000);
|
||||||
|
Loading…
Reference in New Issue
Block a user