各位大侠:我现有这样一个类。
public class Constants
{
public static final String ABC = "abc";
}在其他类中是否可以这样加锁
synchronized (Constants.ABC)
{
记得synchronized 可以对常量加锁,因为常量就是系统中一块固定的内存,可以用来竞争。
这样加锁有什么问题吗?
public class Constants
{
public static final String ABC = "abc";
}在其他类中是否可以这样加锁
synchronized (Constants.ABC)
{
记得synchronized 可以对常量加锁,因为常量就是系统中一块固定的内存,可以用来竞争。
这样加锁有什么问题吗?
synchronized (Constants.ABC) Constants.ABC在其他类的话,返回的引用也是同一个对象,是同个monitor
另外你这样做是有问题的,你锁的是一个字符串,但是这个字符串却是常量池里的东西,在任何地方用到同样的代码就会锁住但是如果你锁的是NEW出来的对象的话,就不会有这样的问题