Java中不同步的getter / setter行为

我有一堂课,可以作为另一个的委托.

public class Delegate {

    private AnotherClass ac;

    public void delegateCall() {
        this.ac.actualCall();
    }

    public void setAC(AnotherClass ac) {
        this.ac = ac;
    }
}

如果我有很多线程调用委托调用(),而另一个线程调用setAC(),则会产生什么影响?我的假设是,某些调用委托调用()的线程将在设置ac实例之前访问它,而某些线程在设置它之后将对其进行访问.在我的特定应用程序中,每个线程获得哪个实例都没有关系.

我的问题:JVM内部是否可能发生任何潜在的同步,这些同步可能导致调用委托调用()的线程阻塞?

解决方法:

不,这里没有任何障碍.也没有什么可以保证“阅读器”线程会看到交流的变化.实际上,它几乎可以肯定会,但是并不能保证(因为您在此处显示的代码中没有“先入为主”的障碍.这当然可以满足您的情况).

上一篇:20200121-LC-Can You Guess the Secret?


下一篇:Java Commons中的SynchronizedSet