由于枚舉的值是單例的,在BussinessException中直接傳入枚舉實例并修改,可能會有并發(fā)問題吧?
由于枚舉的值是單例的,如果在一個BussinessException傳入枚舉,再執(zhí)行setErrMsg修改錯誤信息。那么在不同線程里所有引用這個枚舉的BussinessException中的ErrMsg都會改變。
由于枚舉的值是單例的,如果在一個BussinessException傳入枚舉,再執(zhí)行setErrMsg修改錯誤信息。那么在不同線程里所有引用這個枚舉的BussinessException中的ErrMsg都會改變。
2019-03-28
舉報
2020-08-29
setErrMsg這個方法是有問題的。
假設第一次調(diào)用方法get,返回”用戶id錯誤“消息,第二次調(diào)用getDefaultMsg方法期望返回“參數(shù)錯誤”這條消息,由于枚舉類是單例的,所以在get修改EmBusinessError.PARAMETER_VALIDATION_ERROR的屬性后,getDefaultMsg方法還是返回”用戶id錯誤“消息。
2020-07-20
有的吧 通過枚舉創(chuàng)建的通用錯誤類型是單列的啊? 并發(fā)下都調(diào)用setErrmsg就有并發(fā)問題 沒毛病的
2019-08-01
這里改的是局部變量吧,沒有并發(fā)問題
2019-06-27
反編譯枚舉類就知道,枚舉類的成員變量都是用static final來修飾的,這樣修改絕對存在線程安全問題,建議msg不要在這里修改
2019-03-28
你怎么修改枚舉中的屬性?反射?你要用反射那有什么會是安全的?
2019-03-28
抱歉,我說錯了。枚舉不是單例,枚舉里面可以定義多個值,每個值都是一個實例,但是這些枚舉值是單例的。用枚舉實現(xiàn)單例模式也是利用它的值只實例化一次這個特性。
在這個視頻教程中,創(chuàng)建了一個枚舉,枚舉定義了多個值,又定義了兩個枚舉屬性code,errMsg。
教程中,在使用某個枚舉值的時候,修改了枚舉的屬性errMsg。這樣是不是有線程安全問題?
2019-03-28
枚舉是實現(xiàn)單例模式的一種方式,但不代表枚舉就是單例模式。由于枚舉和單例很像,都是將構造方法私有化,且不用考慮序列化的問題。
多線程并發(fā)問題,把Singleton聲明成volatile,