我其實以前一直都沒有看源碼的習慣,我覺得看源碼真的很費神,費腦,有可能是我還沒掌握其中的技巧吧。來日方長,慢慢看。
言歸正傳,爲什麼StringBuffer是線程安全的,而StringBuilder是不安全的?
其實很簡單,因爲StringBuffer都是被synchronized修飾。也就是說,在多線程的情況下,是可以使用StringBuffer的。
而線程安全的優勢就是它可以在多線程下使用。多線程千萬不要使用StringBuilder,會出問題的。(什麼問題?syn就是保證在同一時刻,只有一個操作對象來操作你要操作的東西,突然都在操作了,就亂套了。)
以下是StringBuffer的源碼,每個方法都是被syn修飾的。
以下是StringBuilder的源碼,可以發現,沒有syn修飾。
有一篇博客講解得很全,馬下來。https://blog.csdn.net/u014705854/article/details/80815102