ソースを参照

fix[litemall-core]: 修复潜在问题。

Junling Bu 6 年 前
コミット
65e94e69d8

+ 4 - 1
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

+ 17 - 0
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();
+        }
+    }
 }