Posted on 九月 6, 2018
Java中使用synchronized锁定字符串
synchronized (someString){ //xxxx }
如果someString是动态生成的,则无法锁住,因为虽然字符串内容是相同的,但是不是同一个字符串对象。
解决办法是改成这样
synchronized (someString.intern()){ //xxxx }
String的intern()方法可以使得内容一样的字符串,指向同一个内存地址
java6中字符串池是固定大小,java7、8是可修改大小。
java7是1009,java8是25k-50k
参考:
https://blog.csdn.net/u014653197/article/details/76177277
http://silencegg.iteye.com/blog/2069267