- 博客(2)
- 收藏
- 关注
原创 锁撤销阈值达到20次批量重偏向是针对类还是线程?撤销阈值达到20次触发的20是指撤销偏向锁20次后触发还是19次后触发?
可以看到线程t2撤销前19个,但因为没有第20个对象,所以没有触发批量重偏向,二线程t3因为有第20个对象加锁所以触发批量重偏向,说明撤销偏向锁19次后,不会触发批量重偏向,只有第20个对象需要变更偏向才会触发批量重偏向。修改数值,线程t1建立29个对象,并让29个对象加锁(偏向锁偏向t1),线程t2对前19个对象加锁,t3对29个对象加锁,多线程执行顺序为t1->t2->t3。建立spring项目,要有依赖。
2024-08-03 21:54:20
307
原创 如何理解先删除缓存还是先修改数据库。
更新线程有两操作1.删除缓存,2.修改数据库。要想实现变化后缓存中是旧数据有两个条件1.读取数据库数据必须在修改前才能读到旧数据,2.写入缓存必须在删除缓存后才能保证写入旧数据。可以看到如果左边要满足数据不一致的话读数据库,写缓存必须经过更新数据库删除缓存时间跨度,而更新数据库时间是远大于写入缓存的时间的,所以左边不容易发送数据不一致情况。针对这个问题,其实反过来更好理解,即”先删除缓存还是先修改数据库能保证数据一致“变为”数据不一致的条件是什么“,好,现在就经过第一步转换了,接下来就解决这个问题。
2024-08-01 00:20:38
384
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅