繁体   English   中英

Java字符串不变性与String对象的实例

[英]Java String immutability vs instances of String objects

在Java中, 字符串很特殊

由于具有相同内容的字符串文字在公共池中共享存储,因此Java的String被设计为不可变的。 也就是说,一旦构造了String,就无法修改其内容。 否则,共享相同存储位置的其他String引用将受到更改的影响,这可能是不可预测的,因此是不合需要的。

如果我在String上同步怎么办? 我会锁定共享相同内容的String的所有实例吗?

例如:我有一个多线程类,可以从数据文件中读取和写入。 每天有1个文件,我想同步读取和写入同一个文件,以防止不可预测的行为。 我可以简单地同步文件名(String)吗?

你可以实习字符串,但是对于必须维护代码的下一个人来说它有点不透明。 我建议你创建一个File对象或一个名为fileLock的单独对象(比如说)来更清楚地表示意图。

你可以用String.intern()来做到这一点:

String fileName = "fileName";
fileName = fileName.intern();
synchronized (fileName) {

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM