Selaa lähdekoodia

fix: TimeUtils - reuse only one Timer instance

Ranides Atterwim 11 vuotta sitten
vanhempi
commit
62ae38d592

+ 1 - 1
pom.xml

@@ -5,7 +5,7 @@
 
     <groupId>net.ranides</groupId>
     <artifactId>assira</artifactId>
-    <version>0.70.1</version>
+    <version>0.70.2</version>
     <packaging>jar</packaging>
 
     <name>assira</name>

+ 1 - 2
src/main/java/net/ranides/assira/time/AutoTimerTask.java

@@ -6,7 +6,6 @@
  */
 
 package net.ranides.assira.time;
-import java.util.Timer;
 import java.util.TimerTask;
 import javax.swing.SwingUtilities;
 
@@ -40,7 +39,7 @@ public abstract class AutoTimerTask<T> {
     }
     
     protected AutoTimerTask<T> schedule(int delay) {
-        (new Timer()).schedule( handle, 0, delay );
+        TimeUtils.Li.TIMER.schedule( handle, 0, delay );
         return this;
     }
     

+ 5 - 1
src/main/java/net/ranides/assira/time/TimeUtils.java

@@ -91,7 +91,7 @@ public class TimeUtils {
     }
 
     public static TimerTask runAfter(int ms, TimerTask action) {
-        (new Timer()).schedule(action, ms);
+        Li.TIMER.schedule(action, ms);
         return action;
     }
     
@@ -102,5 +102,9 @@ public class TimeUtils {
     public static <Q> AutoTimerTask<Q> runRepeatUI(int count, int delay, Q param, AutoTimerTask<Q> task) {
         return task.apply(true, count, param).schedule(delay);
     }
+    
+    static final class Li { // PMD - lazy init idiom
+        static final Timer TIMER = new Timer("Assira TimeUtils",true);
+    }
 
 }