StringBuilder和StringBuffer,爲什麼一個是不安全,一個是安全的?

我其實以前一直都沒有看源碼的習慣,我覺得看源碼真的很費神,費腦,有可能是我還沒掌握其中的技巧吧。來日方長,慢慢看。

言歸正傳,爲什麼StringBuffer是線程安全的,而StringBuilder是不安全的?

其實很簡單,因爲StringBuffer都是被synchronized修飾。也就是說,在多線程的情況下,是可以使用StringBuffer的。

線程安全的優勢就是它可以在多線程下使用。多線程千萬不要使用StringBuilder,會出問題的。(什麼問題?syn就是保證在同一時刻,只有一個操作對象來操作你要操作的東西,突然都在操作了,就亂套了。)

以下是StringBuffer的源碼,每個方法都是被syn修飾的。

以下是StringBuilder的源碼,可以發現,沒有syn修飾。


 

有一篇博客講解得很全,馬下來。https://blog.csdn.net/u014705854/article/details/80815102

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章