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

klo*_*onq 2 java string

在Java中,字符串很特殊.

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

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

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

ᴇʟᴇ*_*ᴀтᴇ 7

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