锁-lock.intern()

Posted karbon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了锁-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);
    }
}

 

以上是关于锁-lock.intern()的主要内容,如果未能解决你的问题,请参考以下文章

为啥基于锁的程序不能组成正确的线程安全片段?

LockSupport.java 中的 FIFO 互斥代码片段

读写锁 与 互斥锁

互斥锁 & 共享锁

并发技术12线程锁技术的使用

java并发线程锁技术的使用