锁-lock.intern()

为什么要使用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);
    }
}

 

上一篇:Java中String.intern()方法详解


下一篇:Java-String-对象,你真的了解了吗?