我知道,在方法之前使用 synchronize
关键字可以使该对象实现同步。也就是说,运行同一对象实例的2个线程将被同步。
但是,由于同步是在对象级别,运行该对象的不同实例的2个线程将不会被同步。如果我们在 Java 类中有一个由该方法调用的静态变量,我们希望它跨类的实例进行同步。这两个实例在两个不同的线程中运行。
我们可以通过以下方式实现同步吗?
public class Test
{
private static int count = 0;
private static final Object lock= new Object();
public synchronized void foo()
{
synchronized(lock)
{
count++;
}
}
}
因为我们已经定义了一个静态的对象 lock
,并且我们使用关键字 synchronized
作为该锁,所以静态变量 count
现在在类 Test
的实例之间是同步的,这是真的吗?