1.4脏读

脏读:

对于对象的同步和异步的方法,我们在设计自己的程序的时候,一定要考虑问题的整体,不然就会出现数据不一致的错误,很经典的错误就是脏读.

 

 首先是主线程,走着走着出现一个t1线程,t1执行run方法,调用setValue();主线程1秒的时候调了getValue()方法;

从上面看,在t1线程2秒内设置值得时候,主线程睡眠一秒后就去取值了 

 我希望设置值的时候没有人来打扰我,就是希望在setValue()的时候,不要去getValue()

所以需要在getValue()和setValue()两个方法上都加上synchronized关键字,保证setValue()执行结束之后,再去getValue()取值.

===================================================================

示例总结:

  在我们对一个对象的方法加锁的时候,需要考虑业务的整体性,即为setValue/getValue方法同时加锁synchronized同步关键字,保证业务(service)的原子性,不然会出现业务错误(也从侧面保证业务的一致性)

 厉害了!!!

猜你喜欢

转载自www.cnblogs.com/curedfisher/p/11980674.html
1.4