Ranides Atterwim 3 anos atrás
pai
commit
209c5097ad

+ 9 - 3
assira.core/src/main/java/net/ranides/assira/concurrent/TaskBuilder.java

@@ -333,7 +333,7 @@ public class TaskBuilder {
         if(actionInterval != null) {
             return TaskInvoker.repeat(toMillis(delay), toMillis(interval), new IntervalTask(repeat, actionStart, actionCancel, actionFinish, actionInterval));
         } else {
-            return TaskInvoker.later(toMillis(delay), new LaterTask(actionStart, actionCancel));
+            return TaskInvoker.later(toMillis(delay), new LaterTask(actionStart, actionCancel, actionFinish));
         }
     }
 
@@ -347,14 +347,20 @@ public class TaskBuilder {
 
         protected final Consumer<Integer> rCancel;
 
-        public LaterTask(Consumer<Integer> rStart, Consumer<Integer> rCancel) {
+        protected final Consumer<Integer> rFinish;
+
+        public LaterTask(Consumer<Integer> rStart, Consumer<Integer> rCancel, Consumer<Integer> rFinish) {
             this.rStart = rStart;
             this.rCancel = rCancel;
+            this.rFinish = rFinish;
         }
 
         @Override
         public void run() {
             rStart.accept(0);
+            if(rFinish != null) {
+                rFinish.accept(0);
+            }
         }
 
         @Override
@@ -382,7 +388,7 @@ public class TaskBuilder {
         protected final Consumer<Integer> rInterval;
 
         public IntervalTask(Integer max, Consumer<Integer> rStart, Consumer<Integer> rCancel, Consumer<Integer> rFinish, Consumer<Integer> rInterval) {
-            super(rStart, rCancel);
+            super(rStart, rCancel, rFinish);
             this.max = max;
             this.rFinish = rFinish;
             this.rInterval = rInterval;

+ 17 - 0
assira.core/src/test/java/net/ranides/assira/concurrent/TaskBuilderTest.java

@@ -59,4 +59,21 @@ public class TaskBuilderTest {
         ManualTestUtils.sleep(5000);
     }
 
+    @Test
+    public void delay() {
+        TimeMetric tm = new TimeMetric(true).start();
+
+        new TaskBuilder()
+            .delay(500)
+            .start(() -> {
+                System.err.println(" - start " + tm.time());
+            })
+            .finish(() -> {
+                System.err.println(" - finish " + tm.time());
+            })
+            .run();
+
+        ManualTestUtils.sleep(5000);
+    }
+
 }