为什么同步的StringBuffer从来都不是一个好主意
生活随笔
收集整理的這篇文章主要介紹了
为什么同步的StringBuffer从来都不是一个好主意
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
介紹
StringBuffer是用于可變字符串的同步類。 使其同步的主要問題是
StringBuffer的問題
這是來自真實類的示例,該類用于許多交易系統的生產中。 它不是一種常用的方法,但是您可能會認為StringBuffer為您提供了線程安全,而實際上卻沒有。 public void addProperty(String name, String value) {if (value != null && value.length() > 0) {if (sb.length() > 0) {sb.append(',');}sb.append(name).append('=').append(value);}} 盡管單個調用是線程安全的,但多個調用卻不是。 要找到不涉及多個調用(包括toString)的StringBuffer的好用法,幾乎是不可能的一個難題
想象一下三個線程的調用(不分先后) T1: addProperty("a", "b"); T2: addProperty("c", "d"); T3: sb.toString();編寫一個程序,該程序將生成T3的sb.toString()的所有可能輸出(我發現是89)。出于線程安全的考慮,您可以將其減少到4。
注意
如果使用StringBuilder,情況會更糟,但是至少您可能不會認為方法不是線程安全的。 例如SimpleDateFormat使用StringBuffer
參考: 為什么我們的JCG合作伙伴 Peter Lawrey在Vanilla Java博客上從來沒有一個同步StringBuffer的好主意 。并發 2013-04-26
彼得·勞瑞翻譯自: https://www.javacodegeeks.com/2013/04/why-a-synchronized-stringbuffer-was-never-a-good-idea.html
總結
以上是生活随笔為你收集整理的为什么同步的StringBuffer从来都不是一个好主意的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深圳中兴通讯厂在哪里
- 下一篇: 电脑显卡上面4pin接口(显卡上面的4针