diff --git a/litemall-core/src/main/java/org/linlinjava/litemall/core/task/Task.java b/litemall-core/src/main/java/org/linlinjava/litemall/core/task/Task.java index b71feb6b..bdcc5fb1 100644 --- a/litemall-core/src/main/java/org/linlinjava/litemall/core/task/Task.java +++ b/litemall-core/src/main/java/org/linlinjava/litemall/core/task/Task.java @@ -1,5 +1,8 @@ package org.linlinjava.litemall.core.task; +import com.google.common.primitives.Ints; + +import java.time.LocalDateTime; import java.util.concurrent.Delayed; import java.util.concurrent.TimeUnit; @@ -24,7 +27,7 @@ public abstract class Task implements Delayed, Runnable{ @Override public int compareTo(Delayed o) { - return (int)(this.getDelay(TimeUnit.MILLISECONDS) - o.getDelay(TimeUnit.MILLISECONDS)); + return Ints.saturatedCast(this.start - ((Task) o).start); } @Override diff --git a/litemall-core/src/test/java/org/linlinjava/litemall/core/TaskTest.java b/litemall-core/src/test/java/org/linlinjava/litemall/core/TaskTest.java index a76cc442..ec5b65fd 100644 --- a/litemall-core/src/test/java/org/linlinjava/litemall/core/TaskTest.java +++ b/litemall-core/src/test/java/org/linlinjava/litemall/core/TaskTest.java @@ -89,4 +89,21 @@ public class TaskTest { e.printStackTrace(); } } + + @Test + public void test2() { + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String now = df.format(LocalDateTime.now()); + System.out.println("start at time=" + now); + + taskService.addTask(new DemoTask("1", 0)); + taskService.addTask(new DemoTask("2", 1200)); + taskService.addTask(new DemoTask("3", 5200)); + + try { + Thread.sleep(10 * 1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } }