为什么要使用lock.intern(),直接lock有什么问题?
如果锁的字符串是new的方式生成,虽然字符串的内容一致,但是,如果不使用intern的话,可能是比较两个字符串的引用,这个是不一致的。就会导致上锁无效。
public class TestIntern { public static void main(String[] args) { String a = "abc"+123; String b = "abc"+123; String c = new String("abc"+123); String d = new String("abc"+123).intern(); // System.out.println(a==b); // System.out.println(a.equals(b)); System.out.println(a.equals(c)); System.out.println(a==c); System.out.println(a.equals(d)); System.out.println(a==d); } }