From 3d5387615dd3125a7d7fc90b82bd3b5695913ecb Mon Sep 17 00:00:00 2001 From: lxyer <237809796@qq.com> Date: Mon, 10 Dec 2018 22:16:23 +0800 Subject: [PATCH] . --- src/main/java/com/lxyer/timer/TimerTask.java | 22 ++++++++------------ src/main/java/com/lxyer/timer/task/Job.java | 7 +------ src/main/java/com/lxyer/timer/task/Task.java | 6 ++++++ src/test/java/com/lxyer/timer/TimerTest.java | 11 +++++----- 4 files changed, 21 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/lxyer/timer/TimerTask.java b/src/main/java/com/lxyer/timer/TimerTask.java index ba99ac4..bae1836 100644 --- a/src/main/java/com/lxyer/timer/TimerTask.java +++ b/src/main/java/com/lxyer/timer/TimerTask.java @@ -64,8 +64,8 @@ public class TimerTask implements Task { } public void setComplete(boolean complete) { - isComplete = complete; - timerExecutor.remove(name); + if (isComplete = complete) + timerExecutor.remove(name); } public TimerExecutor getTimerExecutor() { @@ -82,20 +82,16 @@ public class TimerTask implements Task { @Override public void run() { - //没有完成任务,继续执行,返回true,表示完成 + //没有完成任务,继续执行 if (!isComplete) { long start = System.currentTimeMillis(); - StringBuilder buf = new StringBuilder(); - buf.append("task [" + getName() + "] : ").append("not complete -> "); - long end; - if (!(isComplete = job.execute())) { - end = System.currentTimeMillis(); - timerExecutor.add(this, true); - } else { - end = System.currentTimeMillis(); - } + job.execute(this); + long end = System.currentTimeMillis(); + logger.log(Level.INFO, String.format("task [%s] : not complete -> %s, time: %s ms", getName(), isComplete ? "had complete" : "not complete;", end - start)); - logger.log(Level.INFO, buf.append(isComplete ? "had complete" : "not complete;").append("time: ").append(end - start).append(" ms").toString()); + if (!isComplete) { + timerExecutor.add(this, true); + } } } diff --git a/src/main/java/com/lxyer/timer/task/Job.java b/src/main/java/com/lxyer/timer/task/Job.java index c72fb00..f51d105 100644 --- a/src/main/java/com/lxyer/timer/task/Job.java +++ b/src/main/java/com/lxyer/timer/task/Job.java @@ -8,12 +8,7 @@ public interface Job { /** * 任务执行的内容 - * @return true:完成完成任务,false:未完成任务 */ - boolean execute(); - - /*default Job then(Job job) { - return job; - }*/ + void execute(Task task); } diff --git a/src/main/java/com/lxyer/timer/task/Task.java b/src/main/java/com/lxyer/timer/task/Task.java index d6af58b..031716f 100644 --- a/src/main/java/com/lxyer/timer/task/Task.java +++ b/src/main/java/com/lxyer/timer/task/Task.java @@ -41,6 +41,12 @@ public interface Task extends Runnable { */ boolean isComplete(); + /** + * 完成任务(结束标记) + * @param complete + */ + void setComplete(boolean complete); + /** * 开始时间(创建时间) * @return diff --git a/src/test/java/com/lxyer/timer/TimerTest.java b/src/test/java/com/lxyer/timer/TimerTest.java index 2fd76f8..244e6f2 100644 --- a/src/test/java/com/lxyer/timer/TimerTest.java +++ b/src/test/java/com/lxyer/timer/TimerTest.java @@ -24,10 +24,9 @@ public class TimerTest { TimerExecutor timerExecutor = new TimerExecutor(1); //Task t1 = new TaskImpl("a1", new ScheduledExpres("1-40 * * * *"));//1-40,定时每分钟执行 //TaskImpl t2 = new TaskImpl("a2", ScheduledCycle.of(5000 * 1)); - Task task = TimerTask.by("A2", ScheduledCycle.of(1000 * 1), () -> { + Task task = TimerTask.by("A2", ScheduledCycle.of(1000 * 1), (t) -> { System.out.println("xxxx"); - return false;// false 继续执行, true结束任务 }); @@ -149,7 +148,7 @@ public class TimerTest { 08 18 * 7,8 4 "task1", "1 22-23 * * 7" */ - Task task = TimerTask.by("task1", ScheduledExpres.of("1 22-23 * * 7"), () -> { + Task task = TimerTask.by("task1", ScheduledExpres.of("1 22-23 * * 7"), (t) -> { //System.out.println(""); @@ -169,7 +168,6 @@ public class TimerTest { System.out.println(new SimpleDateFormat("12: yyyy-MM-dd HH:mm:ss").format(nextTime())); System.out.println(new SimpleDateFormat("13: yyyy-MM-dd HH:mm:ss").format(nextTime()));*/ - return true; }); task.run(); task.setScheduled(ScheduledCycle.of(1000 * 5));//定时每秒执行 @@ -181,14 +179,15 @@ public class TimerTest { public void t7() { TimerExecutor executor = new TimerExecutor(1); - executor.add(TimerTask.by("A1", ScheduledCycle.of(1000 * 5), () -> { + executor.add(TimerTask.by("A1", ScheduledCycle.of(1000 * 5), (t) -> { try { Thread.sleep(6); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("task do.."); - return true; + + t.setComplete(true);//通过标记控制任务结束 }));