2025-02-15

後臺admin給用戶加分,點的快瞭,會加兩次分,在前臺沒限制的情況下,後臺又不想用synchronized可以有兩種解決辦法


自己模塊的util類加個 volatile的static變量
Java代碼 
public static volatile isRunning = false;//靜態變量,默認加分操作未進行 


加分邏輯代碼:

Java代碼 
if(util.isRunning==false){ 
util.isRunning = true;//加分操作就在進行中瞭… 
//邏輯代碼 
util.isRunning = false;//標志重新設定 
}else{ 
//正在加分,這裡就什麼都不做 

 

第二種,用AtomicBoolean

模塊util類加上,
Java代碼 
public static AtomicBoolean isRunning  = new AtomicBoolean(false);//未執行的標志 


加分邏輯代碼:

Java代碼 
if(util.AtomicBoolean.compareAndSet(false, true)){ 
//其實跟上邊沒啥兩樣,就是貌似看起來專業點…isRunning==false這時候執行邏輯 
util.isRunning.set(false);//最後邏輯執行完瞭,再把標志設回false 
}else{ 
//do nothing 


util.AtomicBoolean.compareAndSet(false, true)隻不過節省瞭util.isRunning = true;這句代碼

作者“Welcome”

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *