av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

java中stringbuffer線程安全分析實(shí)例詳解

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

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

1.StringBuffer線程說明

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

可將字符串緩沖區(qū)安全地用于多個(gè)線程。可以在必要時(shí)對(duì)這些方法進(jìn)行同步,因此任意特定實(shí)例上的所有操作就好像是以串行順序發(fā)生的,該順序與所涉及的每個(gè)線程進(jìn)行的方法調(diào)用順序一致。

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

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

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

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

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

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

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

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

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

關(guān)于stringbuffer基礎(chǔ)知識(shí)點(diǎn)擴(kuò)展:

StringBuffer

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

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

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

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

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

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

字符串的內(nèi)容一般不會(huì)隨意的修改,因?yàn)槊啃薷囊淮味紩?huì)創(chuàng)建一個(gè)新的字符串對(duì)象。

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

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

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

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

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

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

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 亚洲黄色在线视频 | 91精品看片| 天天爽夜夜爽夜夜爽精品视频 | 国产h在线| 久久亚洲欧美 | 国产成人一区二区三区 | 一区二区三区不卡视频 | 狠狠干狠狠干 | 亚洲免费精品视频 | 亚洲伊人影院 | 性欧美精品 | 日韩精品福利 | 国产亚洲一区二区三区 | 一区二区久久 | 免费黄色片视频 | 国产性猛交| 精品视频久久 | www日韩| 丁香av| 国产黄色片在线观看 | 国产传媒视频在线观看 | 一区二区三区在线看 | 在线免费观看黄色片 | 国产日韩在线视频 | 欧美伦理一区二区 | 在线伊人网 | 日韩一区在线播放 | 狠狠操av | 日本精品免费 | 国产性猛交 | 国产精品少妇 | 91性视频| 午夜影院黄 | 欧美激情网 | 亚洲激情综合网 | 国产精品免费一区 | av网站在线看 | 三级黄色录像片 | 日韩二三区 | 黄色大片在线免费观看 | 成人免费福利视频 |