我有一堂课,可以作为另一个的委托.
public class Delegate {
private AnotherClass ac;
public void delegateCall() {
this.ac.actualCall();
}
public void setAC(AnotherClass ac) {
this.ac = ac;
}
}
如果我有很多线程调用委托调用(),而另一个线程调用setAC(),则会产生什么影响?我的假设是,某些调用委托调用()的线程将在设置ac实例之前访问它,而某些线程在设置它之后将对其进行访问.在我的特定应用程序中,每个线程获得哪个实例都没有关系.
我的问题:JVM内部是否可能发生任何潜在的同步,这些同步可能导致调用委托调用()的线程阻塞?
解决方法:
不,这里没有任何障碍.也没有什么可以保证“阅读器”线程会看到交流的变化.实际上,它几乎可以肯定会,但是并不能保证(因为您在此处显示的代码中没有“先入为主”的障碍.这当然可以满足您的情况).