大家都知道,String是final的,每次对它的操作都会产生新的String,这很大程度上是安全性的考虑,但是产生大量的String也是会有一些问题的,1.大量的String会对gc产生影响;2.两次 new String(“aa”)操作,产生的String不一样,如果用这两个去做synchronized(String)操作就达不到想要的效果,因为synchronized必须是对同一个对象进行加锁才有效果。
有两种办法可以让两次 new String(“aa”)的String指向同一对象:java的intern方法和guava Interners。
我们先来看一个不使用intern方法和Interners的例子:


解决String同步问题的两种方法
博客指出String是final的,每次操作会产生新对象,这虽出于安全考虑,但会影响GC,且用于synchronized操作无法达到预期效果。介绍了让两次new String(“aa”)指向同一对象的两种办法:java的intern方法和guava Interners,并准备给出不使用这两种方法的例子。
5万+

被折叠的 条评论
为什么被折叠?



