分享

使用synchronized,如何判断是不是同一个锁。

 liang1234_ 2019-01-29

先来看一下 == 和 equals 的区别:

java中默认的equals方法实现如下:

  1. public boolean equals(Object obj) {
  2. return (this == obj);
  3. }

值类型,用==判断相等性。对象引用的话,==判断引用指向的对象是否是同一个。==是判断两个变量或实例是不是指向同一个内存空间。 equals是判断两个变量或实例所指向的内存空间的值是不是相同 。

equals是Object的成员函数,有些类会覆盖这个方法,用于判断对象的等价性。例如String类。

  1. String s1 = "abc"+"def";
  2. String s2 = new String(s1);
  3. System.out.println("s1==s2? " + (s1==s2));
  4. System.out.println("s1.equals(s2)? "+s1.equals(s2));
  5. String s3 = "abc";
  6. String s4 = "abc";
  7. System.out.println("s3==s4? "+(s3==s4));
  8. System.out.println("s3.equals(s4)? "+s3.equals(s4));

输出:

  1. s1==s2? false
  2. s1.equals(s2)? true
  3. s3==s4? true

synchronized中锁对象是使用的equals比较还是==

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多