【发布时间】:2017-04-11 05:58:39
【问题描述】:
String 是不可变的,Java 中的每个不可变对象都是线程安全的,这意味着 String 也是线程安全的。字符串不能同时被两个线程使用。
StringBuffer 是可变的,但 StringBuffer 中的每个方法都是同步的,即 StringBuffer 是线程安全的。所以性能很慢。
那么 My Query is String 有性能问题吗?
【问题讨论】:
-
您是否询问与连接明确相关的性能问题?
-
"字符串不能被两个线程同时使用。"嗯,是的,它可以,正是因为它是不可变的。您将“线程安全”误认为“需要锁定”。所以这个问题的前提被打破了——如果不是这样,那就太宽泛了,真的。
-
“字符串不能同时被两个线程使用”——你为什么这么说?你有什么参考吗?
-
不可变对象始终是线程安全的。正确的?如果是线程安全的,两个线程如何访问资源。
-
"如果线程安全,两个线程如何访问资源。"嗯,通过阅读?你认为什么是停止两个线程同时访问它?
标签: java string performance performance-testing