我有一个看起来像这样的类:
public class Test { private static final Object someObject = new Object(); public void doSomething() { synchronized (someObject) { System.out.println(someObject.toString()); } } }
我可以考虑同步对象,还是有问题,因为它是静态成员?
编辑:请注意,不同的线程可能正在访问doSomething(),并且在这种情况下必须以线程安全的方式访问该对象.
通过使用静态对象作为监视对象,只有一个使用Test类的任何实例的线程可以进入同步块.如果监视器对象不是静态对象,则持有Test类的不同实例的其他线程可以进入同步块.