国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

StringBuilder和StringBuffer的區(qū)別

2019-11-11 05:19:28
字體:
供稿:網(wǎng)友

StringBuilder非線程安全,StringBuffer線程安全。證明如下:

import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;

public class StringBuilderAndBufferTest implements Runnable{ static StringBuilder builder = new StringBuilder(); static StringBuffer buffer=new StringBuffer();

public void run() { try { Thread.sleep((int)(Math.random() * 2)); } catch (InterruptedException e) { e.PRintStackTrace(); } builder.append("1"); buffer.append("1");}public static void main(String[] args) throws InterruptedException { ExecutorService pool = Executors.newFixedThreadPool(50); for (int i = 0; i < 30000; i++) { pool.execute(new StringBuilderAndBufferTest()); } Thread.sleep(3000); // 如果長度為30000就是安全的 System.out.println("StringBuilder長度==="+builder.length()); System.out.println("StringBuffer長度==="+buffer.length());}

}

結(jié)果如下:

StringBuilder長度===29536StringBuffer長度===30000

查看二者append()方法的區(qū)別

public StringBuilder append(String str) { super.append(str); return this;}

public synchronized StringBuffer append(String str) { super.append(str); return this;}public AbstractStringBuilder append(String str) { if (str == null) str = "null"; int len = str.length(); ensureCapacityInternal(count + len); str.getChars(0, len, value, count); count += len; return this;}二者底層都是調(diào)用父類AbstractStringBuilder的append(String str),區(qū)別在于StringBuffer的append方法有synchronized關(guān)鍵字。

synchronized關(guān)鍵字表示該方法一次只能有一個(gè)線程進(jìn)入,其他線程要想在此時(shí)調(diào)用該方法,只能排隊(duì)等候,當(dāng)前線程(就是在synchronized方法內(nèi)部的線程)執(zhí)行完該方法后,別的線程才能進(jìn)入

故可知:

StringBuilder是非線程安全的,效率更高;

StringBuffer是線程安全的,效率不如StringBuilder。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 无为县| 万全县| 定陶县| 郑州市| 石首市| 海阳市| 达州市| 盐津县| 临汾市| 左贡县| 平山县| 鸡泽县| 五大连池市| 盘锦市| 商洛市| 潞西市| 西青区| 赤峰市| 岑溪市| 防城港市| 绥滨县| 辛集市| 安龙县| 华宁县| 洛浦县| 来安县| 玉溪市| 乃东县| 固始县| 鞍山市| 吉木乃县| 浠水县| 福泉市| 剑阁县| 安陆市| 白山市| 榆中县| 涡阳县| 翼城县| 凤城市| 信阳市|