diff --git a/qmui/src/main/java/com/qmuiteam/qmui/util/OnceReadValue.java b/qmui/src/main/java/com/qmuiteam/qmui/util/OnceReadValue.java index b844b949..a52cf6b9 100644 --- a/qmui/src/main/java/com/qmuiteam/qmui/util/OnceReadValue.java +++ b/qmui/src/main/java/com/qmuiteam/qmui/util/OnceReadValue.java @@ -2,13 +2,18 @@ package com.qmuiteam.qmui.util; public abstract class OnceReadValue
{ - private boolean isRead = false; + private volatile boolean isRead = false; private T cacheValue; public T get(P param){ - if(!isRead){ - isRead = true; - cacheValue = read(param); + if(isRead){ + return cacheValue; + } + synchronized (this){ + if(!isRead){ + cacheValue = read(param); + isRead = true; + } } return cacheValue; }