Fixed potentially thread unsafe initialization.
Change-Id: I047bcd9358a544723603a069faa234c00ba6b757
diff --git a/utils/misc/src/main/java/org/onlab/util/Timer.java b/utils/misc/src/main/java/org/onlab/util/Timer.java
index 276138f..7719fa1 100644
--- a/utils/misc/src/main/java/org/onlab/util/Timer.java
+++ b/utils/misc/src/main/java/org/onlab/util/Timer.java
@@ -8,7 +8,7 @@
*/
public final class Timer {
- private static HashedWheelTimer timer;
+ private static volatile HashedWheelTimer timer;
// Ban public construction
private Timer() {
@@ -21,10 +21,16 @@
*/
public static HashedWheelTimer getTimer() {
if (Timer.timer == null) {
+ initTimer();
+ }
+ return Timer.timer;
+ }
+
+ private static synchronized void initTimer() {
+ if (Timer.timer == null) {
Timer.timer = new HashedWheelTimer();
Timer.timer.start();
}
- return Timer.timer;
}
}