如何在Java中运行不同类实例的线程之间同步静态变量?
2022-08-31 08:45:13
我知道在方法之前使用关键字会将同步带到该对象。也就是说,将同步运行对象同一实例的 2 个线程。synchronize
但是,由于同步是在对象级别进行的,因此将不会同步运行对象不同实例的 2 个线程。如果我们在由该方法调用的 Java 类中有一个静态变量,我们希望它在类的实例之间同步。这两个实例在 2 个不同的线程中运行。
我们可以通过以下方式实现同步吗?
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