我们可以在 Java 中对象的构造函数中调用对象的同步方法吗?

Can we call synchronized method of an object inside the constructor of the object in Java?

我是 Java 的新手。我想知道是否可以在构造函数中调用同步方法。有例子:

class a{
    int a1;

    public a(){
        a1 = 1;
        increment();
    }

    private synchronized void increment(){
        a1++;
    }
}

这是一个玩具示例。我可以在构造函数中将 a1 设置为 2。我只是很困惑我们是否可以在构造函数中调用 increment()

你可以这样做,但同步是没有意义的,因为同步方法将锁定当前正在创建的实例。但是当它还没有被创建和返回时,还有哪个线程可以访问它呢?没有人。
只要您遵循良好的实践,例如不将 this 传递给构造函数体内的其他 classes/objects,构造函数确实是事实上的线程安全的。
您的示例在 static 字段上使用 synchronized static 方法或 synchronized 可能更有意义。