From a759953dfa894e57c893fbdfc267082596b88d11 Mon Sep 17 00:00:00 2001 From: lxyer <237809796@qq.com> Date: Mon, 4 May 2020 10:36:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=8C=85=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 9 +- .../tccn}/timer/TimerExecutor.java | 8 +- .../lxyer => net/tccn}/timer/TimerTask.java | 8 +- .../tccn}/timer/queue/TimerQueue.java | 6 +- .../tccn}/timer/scheduled/Scheduled.java | 2 +- .../tccn}/timer/scheduled/ScheduledCycle.java | 2 +- .../timer/scheduled/ScheduledExpres.java | 4 +- .../lxyer => net/tccn}/timer/task/Job.java | 2 +- .../lxyer => net/tccn}/timer/task/Task.java | 6 +- .../lxyer => net/tccn}/timer/TimerTest.java | 141 ++++++++++-------- 10 files changed, 102 insertions(+), 86 deletions(-) rename src/main/java/{com/lxyer => net/tccn}/timer/TimerExecutor.java (92%) rename src/main/java/{com/lxyer => net/tccn}/timer/TimerTask.java (95%) rename src/main/java/{com/lxyer => net/tccn}/timer/queue/TimerQueue.java (96%) rename src/main/java/{com/lxyer => net/tccn}/timer/scheduled/Scheduled.java (89%) rename src/main/java/{com/lxyer => net/tccn}/timer/scheduled/ScheduledCycle.java (98%) rename src/main/java/{com/lxyer => net/tccn}/timer/scheduled/ScheduledExpres.java (99%) rename src/main/java/{com/lxyer => net/tccn}/timer/task/Job.java (85%) rename src/main/java/{com/lxyer => net/tccn}/timer/task/Task.java (88%) rename src/test/java/{com/lxyer => net/tccn}/timer/TimerTest.java (52%) diff --git a/pom.xml b/pom.xml index 7179a96..1176f25 100644 --- a/pom.xml +++ b/pom.xml @@ -4,9 +4,9 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.lxyer + net.tccn redtimer - 0.1.0 + 0.1.1 jar @@ -22,9 +22,10 @@ org.apache.maven.plugins maven-compiler-plugin + 3.6.1 - 1.8 - 1.8 + 14 + 14 diff --git a/src/main/java/com/lxyer/timer/TimerExecutor.java b/src/main/java/net/tccn/timer/TimerExecutor.java similarity index 92% rename from src/main/java/com/lxyer/timer/TimerExecutor.java rename to src/main/java/net/tccn/timer/TimerExecutor.java index 319a5b7..5645eba 100644 --- a/src/main/java/com/lxyer/timer/TimerExecutor.java +++ b/src/main/java/net/tccn/timer/TimerExecutor.java @@ -1,7 +1,7 @@ -package com.lxyer.timer; +package net.tccn.timer; -import com.lxyer.timer.queue.TimerQueue; -import com.lxyer.timer.task.Task; +import net.tccn.timer.queue.TimerQueue; +import net.tccn.timer.task.Task; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -21,7 +21,7 @@ public class TimerExecutor { start(); } - public void add(Task ... task){ + public void add(Task... task){ for (Task t : task) { t.setTimerExecutor(this); queue.push(t); diff --git a/src/main/java/com/lxyer/timer/TimerTask.java b/src/main/java/net/tccn/timer/TimerTask.java similarity index 95% rename from src/main/java/com/lxyer/timer/TimerTask.java rename to src/main/java/net/tccn/timer/TimerTask.java index 7062e24..f8655df 100644 --- a/src/main/java/com/lxyer/timer/TimerTask.java +++ b/src/main/java/net/tccn/timer/TimerTask.java @@ -1,8 +1,8 @@ -package com.lxyer.timer; +package net.tccn.timer; -import com.lxyer.timer.scheduled.Scheduled; -import com.lxyer.timer.task.Job; -import com.lxyer.timer.task.Task; +import net.tccn.timer.scheduled.Scheduled; +import net.tccn.timer.task.Job; +import net.tccn.timer.task.Task; import java.time.LocalDateTime; import java.time.ZoneId; diff --git a/src/main/java/com/lxyer/timer/queue/TimerQueue.java b/src/main/java/net/tccn/timer/queue/TimerQueue.java similarity index 96% rename from src/main/java/com/lxyer/timer/queue/TimerQueue.java rename to src/main/java/net/tccn/timer/queue/TimerQueue.java index bd9863d..a05ee59 100644 --- a/src/main/java/com/lxyer/timer/queue/TimerQueue.java +++ b/src/main/java/net/tccn/timer/queue/TimerQueue.java @@ -1,6 +1,6 @@ -package com.lxyer.timer.queue; +package net.tccn.timer.queue; -import com.lxyer.timer.task.Task; +import net.tccn.timer.task.Task; import java.util.Arrays; import java.util.HashSet; @@ -20,8 +20,8 @@ public class TimerQueue{ * @param task */ public void push(Task task) { - remove(task.getName()); synchronized (lock){ + remove(task.getName()); int inx = size;//目标坐标 while (inx > 0 && queue[inx-1].theTime() > task.theTime()){ inx--; diff --git a/src/main/java/com/lxyer/timer/scheduled/Scheduled.java b/src/main/java/net/tccn/timer/scheduled/Scheduled.java similarity index 89% rename from src/main/java/com/lxyer/timer/scheduled/Scheduled.java rename to src/main/java/net/tccn/timer/scheduled/Scheduled.java index 84dc245..2f4e578 100644 --- a/src/main/java/com/lxyer/timer/scheduled/Scheduled.java +++ b/src/main/java/net/tccn/timer/scheduled/Scheduled.java @@ -1,4 +1,4 @@ -package com.lxyer.timer.scheduled; +package net.tccn.timer.scheduled; import java.time.LocalDateTime; diff --git a/src/main/java/com/lxyer/timer/scheduled/ScheduledCycle.java b/src/main/java/net/tccn/timer/scheduled/ScheduledCycle.java similarity index 98% rename from src/main/java/com/lxyer/timer/scheduled/ScheduledCycle.java rename to src/main/java/net/tccn/timer/scheduled/ScheduledCycle.java index 35a94fb..ee3a8e3 100644 --- a/src/main/java/com/lxyer/timer/scheduled/ScheduledCycle.java +++ b/src/main/java/net/tccn/timer/scheduled/ScheduledCycle.java @@ -1,4 +1,4 @@ -package com.lxyer.timer.scheduled; +package net.tccn.timer.scheduled; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; diff --git a/src/main/java/com/lxyer/timer/scheduled/ScheduledExpres.java b/src/main/java/net/tccn/timer/scheduled/ScheduledExpres.java similarity index 99% rename from src/main/java/com/lxyer/timer/scheduled/ScheduledExpres.java rename to src/main/java/net/tccn/timer/scheduled/ScheduledExpres.java index 8721b55..ef3f777 100644 --- a/src/main/java/com/lxyer/timer/scheduled/ScheduledExpres.java +++ b/src/main/java/net/tccn/timer/scheduled/ScheduledExpres.java @@ -1,9 +1,7 @@ -package com.lxyer.timer.scheduled; +package net.tccn.timer.scheduled; -import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; -import java.time.ZoneOffset; import java.util.ArrayList; import java.util.Arrays; import java.util.List; diff --git a/src/main/java/com/lxyer/timer/task/Job.java b/src/main/java/net/tccn/timer/task/Job.java similarity index 85% rename from src/main/java/com/lxyer/timer/task/Job.java rename to src/main/java/net/tccn/timer/task/Job.java index f51d105..ddfd6f7 100644 --- a/src/main/java/com/lxyer/timer/task/Job.java +++ b/src/main/java/net/tccn/timer/task/Job.java @@ -1,4 +1,4 @@ -package com.lxyer.timer.task; +package net.tccn.timer.task; /** * @author: liangxianyou at 2018/12/8 17:24. diff --git a/src/main/java/com/lxyer/timer/task/Task.java b/src/main/java/net/tccn/timer/task/Task.java similarity index 88% rename from src/main/java/com/lxyer/timer/task/Task.java rename to src/main/java/net/tccn/timer/task/Task.java index 031716f..1afb060 100644 --- a/src/main/java/com/lxyer/timer/task/Task.java +++ b/src/main/java/net/tccn/timer/task/Task.java @@ -1,7 +1,7 @@ -package com.lxyer.timer.task; +package net.tccn.timer.task; -import com.lxyer.timer.TimerExecutor; -import com.lxyer.timer.scheduled.Scheduled; +import net.tccn.timer.TimerExecutor; +import net.tccn.timer.scheduled.Scheduled; /** * @author: liangxianyou at 2018/8/5 19:32. diff --git a/src/test/java/com/lxyer/timer/TimerTest.java b/src/test/java/net/tccn/timer/TimerTest.java similarity index 52% rename from src/test/java/com/lxyer/timer/TimerTest.java rename to src/test/java/net/tccn/timer/TimerTest.java index a2b49c5..46b9b51 100644 --- a/src/test/java/com/lxyer/timer/TimerTest.java +++ b/src/test/java/net/tccn/timer/TimerTest.java @@ -1,8 +1,9 @@ -package com.lxyer.timer; +package net.tccn.timer; -import com.lxyer.timer.scheduled.ScheduledCycle; -import com.lxyer.timer.scheduled.ScheduledExpres; -import com.lxyer.timer.task.Task; +import net.tccn.timer.scheduled.Scheduled; +import net.tccn.timer.scheduled.ScheduledCycle; +import net.tccn.timer.scheduled.ScheduledExpres; +import net.tccn.timer.task.Task; import org.junit.Test; import java.time.LocalDateTime; @@ -41,8 +42,6 @@ public class TimerTest { }*/ - - Thread.sleep(5000); } @@ -50,7 +49,7 @@ public class TimerTest { * 测试给配置的时间 加1分钟 */ //@Test - public void t3(){ + public void t3() { // MM-dd HH:mm:ss //0 2 * * * @@ -67,46 +66,38 @@ public class TimerTest { //Minute * 1,3 1-3 */5 3-15/5 5 String minute = ss[0]; - if ("*".equals(minute)){//* + if ("*".equals(minute)) {//* next = start.plusMinutes(1); - } else if (minute.matches("^[0-5]??[0-9]??$")){//n - next = LocalDateTime.of(start.getYear(), - start.getMonth(), - start.getDayOfMonth(), - start.getHour(), - Integer.parseInt(minute)); - }else if (minute.matches("^[*]/[0-9]+$")){// */5 - next = start.plusMinutes(Integer.parseInt(minute.replace("*/",""))); - }else if (minute.matches("^([0-5]??[0-9]??,)+([0-5]??[0-9]??)? $")){//1,3 + } else if (minute.matches("^[0-5]??[0-9]??$")) {//n + next = LocalDateTime.of(start.getYear(), start.getMonth(), start.getDayOfMonth(), start.getHour(), Integer.parseInt(minute)); + } else if (minute.matches("^[*]/[0-9]+$")) {// */5 + next = start.plusMinutes(Integer.parseInt(minute.replace("*/", ""))); + } else if (minute.matches("^([0-5]??[0-9]??,)+([0-5]??[0-9]??)? $")) {//1,3 String[] minutes = minute.split(","); - int inx=0; - for (int i = 0; i < minutes.length-1; i++) { - if (start.getMinute() >= Integer.parseInt(minutes[i]) && start.getMinute()< Integer.parseInt(minutes[i+1])){ - inx = i+1; + int inx = 0; + for (int i = 0; i < minutes.length - 1; i++) { + if (start.getMinute() >= Integer.parseInt(minutes[i]) && start.getMinute() < Integer.parseInt(minutes[i + 1])) { + inx = i + 1; } } - next = LocalDateTime.of(start.getYear(), - start.getMonth(), - start.getDayOfMonth(), - start.getHour(), - Integer.parseInt(minutes[inx])); - }else if (minute.matches("^[0-5]??[0-9]??\\-[0-5]??[0-9]??$")){//1-3 + next = LocalDateTime.of(start.getYear(), start.getMonth(), start.getDayOfMonth(), start.getHour(), Integer.parseInt(minutes[inx])); + } else if (minute.matches("^[0-5]??[0-9]??\\-[0-5]??[0-9]??$")) {//1-3 int m = start.getMinute(); String[] split = minute.split("-"); int s = Integer.parseInt(split[0]); int e = Integer.parseInt(split[1]); - if (m < s || m > e){ + if (m < s || m > e) { m = s; - }else{ - m = (m+1) < 60 ? (m+1) : 0; + } else { + m = (m + 1) < 60 ? (m + 1) : 0; } next = LocalDateTime.of(start.getYear(), start.getMonth(), start.getDayOfMonth(), start.getHour(), m); - }else if (minute.matches("^[0-5]??[0-9]??\\-[0-5]??[0-9]??/[0-5]??[0-9]??$")){//3-18/5 + } else if (minute.matches("^[0-5]??[0-9]??\\-[0-5]??[0-9]??/[0-5]??[0-9]??$")) {//3-18/5 // } @@ -116,8 +107,8 @@ public class TimerTest { /** * 测试各种正则表达式的合法性 */ - //@Test - public void t4(){ + @Test + public void t4() { //Pattern pattern = Pattern.compile(); //Minute * 1,3 1-3 */5 3-15/5 @@ -127,51 +118,51 @@ public class TimerTest { //System.out.println("1-3".matches("^[0-5]??[0-9]??\\-[0-5]??[0-9]??$")); //System.out.println("3-18/5".matches("^[0-5]??[0-9]??\\-[0-5]??[0-9]??/[0-5]??[0-9]??$")); - String str = "01-05/5";// * 1,3 1-3 */5 3-15/5 - System.out.println(str.matches("^[0-5]??[0-9]??$")); - System.out.println(str.matches("^[*]/[0-9]+$")); - System.out.println(str.matches("^([0-5]??[0-9]??,)+([0-5]??[0-9]??)?$")); - System.out.println(str.matches("^[0-5]??[0-9]??\\-[0-5]??[0-9]??$")); - System.out.println(str.matches("^[0-5]??[0-9]??\\-[0-5]??[0-9]??/[0-5]??[0-9]??$")); + //String str = "01-05/5";// * 1,3 1-3 */5 3-15/5 + //System.out.println(str.matches("^[0-5]??[0-9]??$")); + //System.out.println(str.matches("^[*]/[0-9]+$")); + //System.out.println(str.matches("^([0-5]??[0-9]??,)+([0-5]??[0-9]??)?$")); + //System.out.println(str.matches("^[0-5]??[0-9]??\\-[0-5]??[0-9]??$")); + //System.out.println(str.matches("^[0-5]??[0-9]??\\-[0-5]??[0-9]??/[0-5]??[0-9]??$")); + System.out.println("111".matches("^[0-9]+.*[0-9]+$")); } /** * 测试配置的表达式 */ - //@Test - public void t6(){ + @Test + public void t6() { //分 时 日 月 周 - TimerExecutor executor = new TimerExecutor(10); + TimerExecutor timer = new TimerExecutor(3); /* 08 18 * 7,8 4 "task1", "1 22-23 * * 7" */ - Task task = TimerTask.by("task1", ScheduledExpres.of("1 22-23 * * 7"), (t) -> { - - //System.out.println(""); - + /*Task task = TimerTask.by("task1", ScheduledExpres.of("16-24 0-2 * * *"), t -> { System.out.println("----"); - //System.out.println(new SimpleDateFormat("0: yyyy-MM-dd HH:mm:ss").format(theTime())); - //System.out.println(new SimpleDateFormat("1: yyyy-MM-dd HH:mm:ss").format(nextTime())); - /*System.out.println(new SimpleDateFormat("2: yyyy-MM-dd HH:mm:ss").format(nextTime())); - System.out.println(new SimpleDateFormat("3: yyyy-MM-dd HH:mm:ss").format(nextTime())); - System.out.println(new SimpleDateFormat("4: yyyy-MM-dd HH:mm:ss").format(nextTime())); - System.out.println(new SimpleDateFormat("5: yyyy-MM-dd HH:mm:ss").format(nextTime())); - System.out.println(new SimpleDateFormat("6: yyyy-MM-dd HH:mm:ss").format(nextTime())); - System.out.println(new SimpleDateFormat("7: yyyy-MM-dd HH:mm:ss").format(nextTime())); - System.out.println(new SimpleDateFormat("8: yyyy-MM-dd HH:mm:ss").format(nextTime())); - System.out.println(new SimpleDateFormat("9: yyyy-MM-dd HH:mm:ss").format(nextTime())); - System.out.println(new SimpleDateFormat("10: yyyy-MM-dd HH:mm:ss").format(nextTime())); - System.out.println(new SimpleDateFormat("11: yyyy-MM-dd HH:mm:ss").format(nextTime())); - 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()));*/ - }); + timer.add(task);*/ + + timer.add(TimerTask.by("task2", ScheduledCycle.of("5s"), t -> { + System.out.println("task2 运行了。。。"); + + t.setScheduled(ScheduledCycle.of("15s")); + t.setComplete(true); + })); + timer.remove("task2"); + + /* task.run(); task.setScheduled(ScheduledCycle.of(1000 * 5));//定时每秒执行 - task.run(); + task.run();*/ + + try { + Thread.sleep(1000 * 60 * 60); + } catch (InterruptedException e) { + e.printStackTrace(); + } } @@ -197,4 +188,30 @@ public class TimerTest { e.printStackTrace(); } } + + //@Test + public void t8() { + String str = "1M"; + System.out.println(); + + Scheduled scheduled = null; + + if (str.matches("^\\d+[y,M,d,H,m,s]$")) { + String endchar = str.substring(str.length() - 1); + + long period = Long.parseLong(str.substring(0, str.length() - 1)); + + if ("y".equals(endchar)) scheduled = ScheduledCycle.of(period * 1000 * 60 * 60 * 24 * 365); + else if ("M".equals(endchar)) scheduled = ScheduledCycle.of(period * 1000 * 60 * 60 * 24 * 30); + else if ("d".equals(endchar)) scheduled = ScheduledCycle.of(period * 1000 * 60 * 60 * 24); + else if ("H".equals(endchar)) scheduled = ScheduledCycle.of(period * 1000 * 60 * 60); + else if ("m".equals(endchar)) scheduled = ScheduledCycle.of(period * 1000 * 60); + else if ("s".equals(endchar)) scheduled = ScheduledCycle.of(period * 1000); + else scheduled = ScheduledCycle.of(period); + } else { + scheduled = ScheduledExpres.of(str); + } + } + + }