From 54cff118c30f0b876bb7ecf8dc82f4d448798258 Mon Sep 17 00:00:00 2001 From: lxyer <237809796@qq.com> Date: Fri, 7 Dec 2018 19:13:55 +0800 Subject: [PATCH] . --- src/main/java/com/lxyer/timer/AbstractTask.java | 11 +++++++++++ src/main/java/com/lxyer/timer/Task.java | 4 ++++ src/main/java/com/lxyer/timer/TimerExecutor.java | 4 ++++ src/test/java/com/lxyer/timer/TimerTest.java | 13 ++++++++----- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/lxyer/timer/AbstractTask.java b/src/main/java/com/lxyer/timer/AbstractTask.java index 9f39998..68c0d29 100644 --- a/src/main/java/com/lxyer/timer/AbstractTask.java +++ b/src/main/java/com/lxyer/timer/AbstractTask.java @@ -15,6 +15,8 @@ public abstract class AbstractTask implements Task { private boolean isComplete; private long startTime = System.currentTimeMillis(); + private TimerExecutor timerExecutor; + public AbstractTask(String name, Scheduled scheduled) { this.name = name; this.scheduled = scheduled; @@ -55,6 +57,15 @@ public abstract class AbstractTask implements Task { public void setComplete(boolean complete) { isComplete = complete; + timerExecutor.remove(name); + } + + public TimerExecutor getTimerExecutor() { + return timerExecutor; + } + + public void setTimerExecutor(TimerExecutor timerExecutor) { + this.timerExecutor = timerExecutor; } public long startTime() { diff --git a/src/main/java/com/lxyer/timer/Task.java b/src/main/java/com/lxyer/timer/Task.java index 8607a8f..7f3cc29 100644 --- a/src/main/java/com/lxyer/timer/Task.java +++ b/src/main/java/com/lxyer/timer/Task.java @@ -50,4 +50,8 @@ public interface Task extends Runnable{ * @return */ long startTime(); + + TimerExecutor getTimerExecutor(); + + void setTimerExecutor(TimerExecutor timerExecutor); } diff --git a/src/main/java/com/lxyer/timer/TimerExecutor.java b/src/main/java/com/lxyer/timer/TimerExecutor.java index 3f07e67..2daf97e 100644 --- a/src/main/java/com/lxyer/timer/TimerExecutor.java +++ b/src/main/java/com/lxyer/timer/TimerExecutor.java @@ -2,6 +2,7 @@ package com.lxyer.timer; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.function.BiConsumer; /** * @author: liangxianyou @@ -17,10 +18,13 @@ public class TimerExecutor { public void add(Task ... task){ for (Task t : task) { + t.setTimerExecutor(this); queue.put(t); } } + private void add(Task task, boolean upTime){ + task.setTimerExecutor(this); if (upTime) task.nextTime(); queue.put(task); } diff --git a/src/test/java/com/lxyer/timer/TimerTest.java b/src/test/java/com/lxyer/timer/TimerTest.java index 92acbb0..4d8d643 100644 --- a/src/test/java/com/lxyer/timer/TimerTest.java +++ b/src/test/java/com/lxyer/timer/TimerTest.java @@ -22,19 +22,22 @@ public class TimerTest { @Test public void t2() throws InterruptedException { 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)); - timerExecutor.add(t1, t2); + + //timerExecutor.add(t2); //60s后修改a1 每2s执行一次 - Thread.sleep(1000); + //Thread.sleep(1000); //task = timerExecutor.get("a1"); - if (t1 != null){ + /*if (t1 != null){ t1.setScheduled(new ScheduledCycle(2000 * 1)); timerExecutor.add(t1); - } + }*/ + + Thread.sleep(5000);