From e5fdd855587dee3da41f3cb9bc66d2e368403ae5 Mon Sep 17 00:00:00 2001 From: cgspine Date: Mon, 20 Dec 2021 14:20:22 +0800 Subject: [PATCH] bugfix: concurrency issue. --- .../java/com/qmuiteam/qmui/util/OnceReadValue.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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; }