实习字符串在不同线程和类交易者之间的行为如何?

实习字符串在不同线程和类交易者之间的行为如何?,第1张

实习字符串在不同线程和类交易者之间的行为如何?

如果在不同的 线程上 ,是,则条件为true。

如果在不同的 类加载器上
,我不会指望条件为真。(但是您是否真的在

String
使用不同的类加载器加载两个副本?)文档说,
intern
String
使用自己的缓存在中实现的。从
String#intern
文档中:

返回字符串对象的规范表示。

该类 最初 由一个 空的字符串池来维护

String

(我的重点)

因此,如果您以某种方式

String
使用不同的类加载器两次加载了该类(我不确定您会怎么做,但是我敢肯定有办法),那么这两个
String
类在 理论上
都将拥有自己的缓存。但是,一个实现可能没有那么好的区别。
intern
是Oracle JVM中的本机方法,使用以C
++实现的符号表。我还没有足够深入地了解逻辑,以了解在您谈论的极端情况下
String
,同一JVM中的两个实例是否共享同一符号表。但是到那时,我们正在研究实现方案,它可能会有所不同。该
文件 建议不,他们不会是相同的字符串。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5095321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存