这里首先在change方法中对d=6进行赋值的时候使用synchronized进行加锁。然后在print方法中对a进行赋值的时候。也首先进行加锁。这样的代码能实现什么效果?并不能保证第二个线程在打印的时候第一个线程执行完change方法并对a,b,c,d完全赋值成功?可能在change方法的执行的时候,刚刚执行c=5,还没执行synchronized(this){ d = 6;}.这个时候cpu切换到另一个线程中,另一个线程一定能获取到对应的锁。然后进行执行。那么int dd = d;就有可能出现不是预期的效果?
不太理解老师这个例子是想怎样表达可见性的?用volatile 修饰,使用触发器的方式还是可以理解的。另一个线程在执行的时候先有判断的。这里该怎么理解