StringBuffer 및 StringBuilder의 스레드 보안 여부

오늘 샤오G는 면접 문제가 하나 있는데 면접 문제는 스트링 버퍼와 스트링 버퍼가 안전한가?그래서 여기에 블로그 설명을 써서 두 마디도 하지 않고 코드를 직접 올리면 프로그래머가 필수적이다(작은 G: 정답은stringBuffer는 라인 안전이다)
StringBuffer buffer= new StringBuffer();
		buffer.append("d");

그리고 저희가 앱 안으로 들어가 보도록 하겠습니다.
@Override
    public synchronized StringBuffer append(String str) {
        toStringCache = null;
        super.append(str);
        return this;
    }

여러분은synchronized를 보셨습니까? 방법에 있어서 라인이 안전하다는 것을 설명합니다
그리고 StringBuilder를 보도록 하겠습니다.
StringBuilder builder= new StringBuilder();
	builder.append("1");

append에 들어가세요.
    @Override
    public StringBuilder append(String str) {
        super.append(str);
        return this;
    }

synchronized가 없습니다. 라인이 안전하지 않습니다. 확장인자를 볼 수 있습니다.
 public AbstractStringBuilder append(String str) {
        if (str == null)
            return appendNull();
        int len = str.length();
        ensureCapacityInternal(count + len);
        str.getChars(0, len, value, count);
        count += len;
        return this;
    }

사실synchronize가 없으면count+=len에 있기 때문에 병발이 비교적 크면stringBuilder를 최대한 적게 사용합니다

좋은 웹페이지 즐겨찾기