簡體   English   中英

“靜態”字段的延遲初始化應“同步”-如何修復

[英]Lazy initialization of “static” fields should be “synchronized” - How to fix it

我正在嘗試解決一個問題,該問題說Lazy initialization of "static" fields should be "synchronized" findbug建議Lazy initialization of "static" fields should be "synchronized" 鏈接建議要么我必須使字段變量volatile要么使初始化塊synchronized 哪種方法更好? 每種方法的優缺點是什么?

沒有更好的了

僅有幾種不同的模式可以解決此問題。 有關主題的完整討論,請參見此處

從這個意義上說:對於剛開始的新手,只需使用synchronized方法即可。 對於“專業”用途-請參見上面的鏈接; 並確定給出的哪種解決方案最適合您的需求。

在您的示例中,應使用synchronized因為volatile不能保證原子性。 如果使用volatile ,則可以初始化該對象的多個實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM