大家都知道,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的例子: