国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

java中stringbuffer線程安全分析實例詳解

瀏覽:6日期:2022-08-18 10:29:03

在對于一些類作用于線程時,安全系數(shù)高的線程更推薦大家使用,在盡可能的程度上降低程序出錯的可能性。對于本篇所要提到的StringBuffer而言,在其緩沖區(qū)中有多個線程的存在,我們在查詢其內(nèi)部方法時發(fā)現(xiàn)了鎖的存在?,F(xiàn)在我們就StringBuffer線程、鎖的應(yīng)用、線程安全分析逐步帶來介紹。

1.StringBuffer線程說明

Java.lang.StringBuffer線程安全的可變字符序列。一個類似于String的字符串緩沖區(qū),但不能修改。雖然在任意時間點上它都包含某種特定的字符序列,但通過某些方法調(diào)用可以改變該序列的長度和內(nèi)容。

可將字符串緩沖區(qū)安全地用于多個線程??梢栽诒匾獣r對這些方法進行同步,因此任意特定實例上的所有操作就好像是以串行順序發(fā)生的,該順序與所涉及的每個線程進行的方法調(diào)用順序一致。

2.synchronized鎖的應(yīng)用方式

(1)修飾實例方法,對當(dāng)前實例加鎖

public synchronized StringBuffer append(int i) { toStringCache = null; super.append(i); return this; }

(2)修飾靜態(tài)方法,對當(dāng)前類對象加鎖

public static synchronized void test(){ i++; }

(3)修飾代碼塊,對指定對象加鎖

public boolean contentEquals(CharSequence cs) { // Argument is a StringBuffer, StringBuilder synchronized(cs) { return nonSyncContentEquals((AbstractStringBuilder)cs); } }3.線程安全分析

StringBuffer buffer= new StringBuffer(); buffer.append('d');然后進入appen里面看看@Override public synchronized StringBuffer append(String str) { toStringCache = null; super.append(str); return this; }

看到synchronized,在方法上面,說明是有線程安全的。

關(guān)于stringbuffer基礎(chǔ)知識點擴展:

StringBuffer

當(dāng)對字符串進行修改的時候,需要使用 StringBuffer 和 StringBuilder 類。

和 String 類不同的是,StringBuffer 和 StringBuilder 類的對象能夠被多次的修改,并且不產(chǎn)生新的未使用對象。

StringBuilder 類在 Java 5 中被提出,它和 StringBuffer 之間的最大不同在于 StringBuilder 的方法不是線程安全的(不能同步訪問)。

由于 StringBuilder 相較于 StringBuffer 有速度優(yōu)勢,所以多數(shù)情況下建議使用 StringBuilder 類。然而在應(yīng)用程序要求線

程安全的情況下,則必須使用 StringBuffer 類

字符串 的內(nèi)容一旦創(chuàng)建,則不允許改變,如果一旦改變,則會創(chuàng)建一個新的字符串對象。

字符串的內(nèi)容一般不會隨意的修改,因為每修改一次都會創(chuàng)建一個新的字符串對象。

如果需要修改字符串的內(nèi)容:建議使用字符串緩沖區(qū)類。

StringBuffer(字符串緩沖區(qū)類): 存儲字符的集合容器。

筆試題: 使用Stringbuffer無參的構(gòu)造方法默認(rèn)的初始化容量是多少? 當(dāng)容量不夠用時會自動增長多少?

StringBuffer的底層是維護了一個字符數(shù)組,存儲字符的時候?qū)嶋H上是往該字符數(shù)組中存儲 的,

而字符數(shù)組的初始化容量是16, 當(dāng)容量不夠使用時,自動增長1倍。

到此這篇關(guān)于java中stringbuffer線程安全分析實例詳解的文章就介紹到這了,更多相關(guān)java中stringbuffer線程安全分析內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 林周县| 朔州市| 聊城市| 如皋市| 油尖旺区| 错那县| 通辽市| 丽水市| 宁海县| 呼伦贝尔市| 大冶市| 新河县| 凌云县| 镇赉县| 大新县| 陕西省| 商都县| 阿巴嘎旗| 阳春市| 织金县| 梁平县| 蓬安县| 射阳县| 亳州市| 炎陵县| 阳谷县| 密云县| 古蔺县| 浦北县| 普兰店市| 辛集市| 巴南区| 托克托县| 平江县| 尼勒克县| 汉寿县| 平阴县| 郁南县| 郑州市| 和平区| 大厂|