各位大侠:我现有这样一个类。
public class Constants
{
public static final String ABC = "abc";
}在其他类中是否可以这样加锁
synchronized (Constants.ABC) 
{
    记得synchronized 可以对常量加锁,因为常量就是系统中一块固定的内存,可以用来竞争。
这样加锁有什么问题吗?

解决方案 »

  1.   

    没问题。不过就因为“abc”就一个,可能导致你不希望的情况,比如不同的竞争条件也被锁住了。
      

  2.   

    没问题的
    synchronized (Constants.ABC) Constants.ABC在其他类的话,返回的引用也是同一个对象,是同个monitor
      

  3.   

    把你的问题贴出来
    另外你这样做是有问题的,你锁的是一个字符串,但是这个字符串却是常量池里的东西,在任何地方用到同样的代码就会锁住但是如果你锁的是NEW出来的对象的话,就不会有这样的问题