簡體   English   中英

Spring控制器是否是線程安全的?

[英]Are Spring Controllers Thread-Safe?

我正在Spring Controller中編寫一個私有實用程序方法。

我需要使用StringBufferStringBuilder 前者是線程安全的,后者不是,但后者要快得多。

基本上,它看起來像這樣:

private String buildTextToDisplay() {
    StringBuffer sb = new StringBuffer();
    sb.append( ... );
    return sb.toString();
}

顯然,我不希望兩個會話同時調用它並返回垃圾。

由於sb是局部變量,因此它不需要是線程安全的。 (每個線程都有自己對唯一StringBuilder的引用,對吧?)

StringBuffer線程安全性在用作類的成員變量時非常有用。 但是如果它是局部變量,那么StringBuilder更好,因為對於局部變量沒有線程安全的概念。

您必須以非常特定的方式使用構建器來注意StringBuilderStringBuffer之間的速度差異。 在99%的使用案例中沒有可觀察到的差異,而現代JIT則由於鎖定省略而100%。

但是,正如其他人注意到的那樣,您可以自由地使用StringBuilder

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM