ran*_*anr 13 java string thread-safety
我想在Java中使用String.intern()来节省内存(使用内部池来获取具有相同内容的字符串).我从不同的线程调用此方法.这是个问题吗?
您问题的简短答案是肯定的。这是线程安全的。
但是,您可能需要重新考虑使用此功能以减少内存消耗。原因是您无法从禁闭字符串列表中删除任何完整内容。更好的解决方案是为此创建您自己的设施。您所需要做的就是将字符串存储为HashMap<String,String>:
public String getInternedString(String s) {
synchronized(strings) {
String found = strings.get(s);
if(found == null) {
strings.put(s, s);
found = s;
}
return found;
}
}
Run Code Online (Sandbox Code Playgroud)