[英]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.