在編寫JAVA代碼的過程中有時要頻繁的對字符串進行拼接,如果直接用“+”拼接的話會建立很多的String型對象,嚴重的話會對服務器資源和性能造成不小的影響;而使用StringBuilder和StringBuffer能解決以上問題。而StringBuffer是線程安全的,而StringBuilder不是線程安全的。
來看一下StringBuffer的一些源碼:
而StringBuilder的源碼一部分如下:
而與之對應的StringBuilder是線程不安全的,也就是沒有加synchronized鎖。所以不難看出我們在高併發的情況下,入股不要考慮數據安全問題的情況下,精良使用StringBuilder,由於沒有資源等待的情況,肯定執行效率和性能會高很多。所以是使用StringBuffer還是使用StringBuilder要視情況而定。
相關推薦
'三分鐘瞭解Java類型轉換valueOf方法和parseInt方法的區別'
"在Java的類型轉換中,我們經常會使用valueOf或者parseInt(parseFloat/parseDouble等)來轉換。這二者有什麼區別呢?本文簡單介紹一下:我們看如下的代碼:String inputValue = "15.0";int a = Integer....
Java
2019-08-28
'java高併發(24):ThreadLocal,InheritableThreadLocal(通俗易懂)'
"本文內容需要解決的問題介紹ThreadLocal介紹InheritableThreadLocal需要解決的問題我們還是以解決問題的方式來引出ThreadLocal、InheritableThreadLocal,這樣印象會深刻一些。目前java開發web系統一般有3層,co...
'探索JAVA併發,如何減少鎖的競爭'
"鎖的競爭會限制代碼的可伸縮性,在併發編程時通過一些手段有意地減少鎖競爭,可以讓程序有更好的表現。所謂可伸縮性,即當增加計算資源(如CPU、內存、帶寬等)時,程序的吞吐量或處理能力會相應增加。這個時候,我們當然希望增加的效果越明顯越好,不過如果鎖競爭太嚴重,可伸縮性會大打折...
'java高併發(12)JUC:ReentrantLock重入鎖'
"synchronized的侷限性synchronized是java內置的關鍵字,它提供了一種獨佔的加鎖方式。synchronized的獲取和釋放鎖由jvm實現,用戶不需要顯示的釋放鎖,非常方便,然而synchronized也有一定的侷限性,例如:當線程嘗試獲取鎖的時候,如...
'小白:都說StringBuilder線程不安全,你為啥不用StringBuffer'
"今天,一個小白跟我說,“我剛看了套Java面試題目,終於想清楚一個道理了,裡面說StringBuilder是線程不安全的,StringBuffer線程安全,難怪我們技術經理讓我們在寫業務代碼的時候要用StringBuffer。”無語!我一口老血噴出!這技術經理是走後門當上...
'JAVA併發異步編程接口,從複雜到簡單一步搞定'
"引言什麼?對你沒有聽錯,也沒有看錯 ..多線程併發執行任務,取結果歸集~~ 不再憂愁....先來看一些APP的獲取數據,諸如此類,一個頁面獲取N多個,多達10個左右的一個用戶行為數據,比如:點贊數,發佈文章數,點贊數,消息數,關注數,收藏數,粉絲數,卡券數,紅包數.......
'Java教程之Java數據結構的學習方法分享'
"Java數據結構是所有Java開發工程師在日常工作中不可缺少的,尤其是我們在處理數據中經常會用到數據結構,這麼重要的知識點很多初學者在學習Java數據結構時不知道該如何學習?下面千鋒武漢Java培訓小編就為大家分享Java數據結構學習方法。Java的工具包提供了非常強大的...
'詳解Java高併發——線程池的使用淺析'
"背景當系統併發的線程數量很多,並且每個線程都是執行一個時間很短的任務就結束了,這樣頻繁創建線程就會大大降低系統的效率,因為頻繁創建線程和銷燬線程需要消耗大量的系統資源。所以需要一個辦法使得線程可以複用,即當線程執行完一個任務,並不被銷燬,而是可以繼續執行其他的任務。在Ja...
Java
2019-08-07
'Java多線程之Callable和Future'
"本篇說明的是Callable和Future,它倆很有意思的,一個產生結果,一個拿到結果。 Callable接口類似於Runnable,從名字就可以看出來了,但是Runnable不會返回結果,並且無法拋出返回結果的異常,而Callable功能更強大一些,被線程執行後,可以返...
Java
2019-08-05
'Java高併發(八):線程組?WTF'
"線程組我們可以把線程歸屬到某個線程組中,線程組可以包含多個線程以及線程組,線程和線程組組成了父子關係,是個樹形結構,如下圖:使用線程組可以方便管理線程,線程組提供了一些方法方便方便我們管理線程。 #pgc-card .pgc-card-href { t...
推薦中...