後臺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”