第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

由于枚舉的值是單例的,在BussinessException中直接傳入枚舉實例并修改,可能會有并發(fā)問題吧?

由于枚舉的值是單例的,如果在一個BussinessException傳入枚舉,再執(zhí)行setErrMsg修改錯誤信息。那么在不同線程里所有引用這個枚舉的BussinessException中的ErrMsg都會改變。

正在回答

7 回答

@RestController
@RequestMapping("/user")
public?class?UserController?{
????
????@GetMapping("/get")
????public?String?get()?{
????????return?EmBusinessError.PARAMETER_VALIDATION_ERROR.setErrMsg("用戶id錯誤")
????????????????????.getErrMsg();
????}

????@GetMapping("/getDefaultMsg")
????public?String?getDefaultMsg()?{
????????return?EmBusinessError.PARAMETER_VALIDATION_ERROR.getErrMsg();
????}
}

setErrMsg這個方法是有問題的。

假設第一次調(diào)用方法get,返回”用戶id錯誤“消息,第二次調(diào)用getDefaultMsg方法期望返回“參數(shù)錯誤”這條消息,由于枚舉類是單例的,所以在get修改EmBusinessError.PARAMETER_VALIDATION_ERROR的屬性后,getDefaultMsg方法還是返回”用戶id錯誤“消息。

1 回復 有任何疑惑可以回復我~

有的吧 通過枚舉創(chuàng)建的通用錯誤類型是單列的啊? 并發(fā)下都調(diào)用setErrmsg就有并發(fā)問題 沒毛病的


0 回復 有任何疑惑可以回復我~

這里改的是局部變量吧,沒有并發(fā)問題


0 回復 有任何疑惑可以回復我~

反編譯枚舉類就知道,枚舉類的成員變量都是用static final來修飾的,這樣修改絕對存在線程安全問題,建議msg不要在這里修改

1 回復 有任何疑惑可以回復我~
#1

少年啊c

這個改的是局部變量
2019-08-01 回復 有任何疑惑可以回復我~

你怎么修改枚舉中的屬性?反射?你要用反射那有什么會是安全的?

0 回復 有任何疑惑可以回復我~
#1

webcat 提問者

枚舉可以有自定義屬性。修改自定義屬性和普通的類一樣的。比如本節(jié)視頻教程中定義的枚舉EmBussinesError
2019-03-28 回復 有任何疑惑可以回復我~

抱歉,我說錯了。枚舉不是單例,枚舉里面可以定義多個值,每個值都是一個實例,但是這些枚舉值是單例的。用枚舉實現(xiàn)單例模式也是利用它的值只實例化一次這個特性。

在這個視頻教程中,創(chuàng)建了一個枚舉,枚舉定義了多個值,又定義了兩個枚舉屬性code,errMsg。

教程中,在使用某個枚舉值的時候,修改了枚舉的屬性errMsg。這樣是不是有線程安全問題?

0 回復 有任何疑惑可以回復我~
#1

sunbohan00

我這是才想起來有個問題忘了和你說,你發(fā)的這些東西是回復你自己,回復的不是我,如果不是我突然想起一個問題,我永遠都不會看到你的這段話。 第二點:課程是5-2里面有的,你為什么提問在3-3。 第三點:我剛看到5-2里面,調(diào)用BussinessException的ErrMsg,根本不會存在你說的問題,首先多個code提示詞,是在不同判斷下條件下的,其次,每一個訂單都會重新調(diào)用這個方法,不會遺留code重復的問題。
2019-03-28 回復 有任何疑惑可以回復我~
#2

webcat 提問者 回復 sunbohan00

謝謝你的回復。每個訂單都會重新調(diào)用這個方法,這個沒問題,問題在于并發(fā)。如果分別有兩個用戶同時去修改同一個code對應的errMsg,即他們同時去修改同一個枚舉值的errMsg,這樣就會出現(xiàn)后者把前者的errMsg覆蓋。
2019-03-28 回復 有任何疑惑可以回復我~

枚舉是實現(xiàn)單例模式的一種方式,但不代表枚舉就是單例模式。由于枚舉和單例很像,都是將構造方法私有化,且不用考慮序列化的問題。

多線程并發(fā)問題,把Singleton聲明成volatile,

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

由于枚舉的值是單例的,在BussinessException中直接傳入枚舉實例并修改,可能會有并發(fā)問題吧?

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號