假如说有两个线程,一个thread1,一个thread2,thread1负责修改数据(每秒一次),thread2负责查询数据处理(三秒一次),thread2对thread1修改的那条数据查询....
请问?如何保证thread2每次查出来的数据都是最新的、?
假如说有两个线程,一个thread1,一个thread2,thread1负责修改数据(每秒一次),thread2负责查询数据处理(三秒一次),thread2对thread1修改的那条数据查询....
请问?如何保证thread2每次查出来的数据都是最新的、?
同步锁即可,把查询和修改加上同一个锁,这样在修改的时候无法查询,在查询的时候无法修改,由于查询和修改中间都有较长时间间隔,而操作本身时间又非常短,从体验上是感觉不到任何问题的。
15 回答8.4k 阅读
8 回答6.2k 阅读
5 回答3.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
粗糙的一个想法就是利用update_time(如果有的话),毕竟你的场景是有一个时间间隔在的。如果线程启动的比较理想是“同时”的,那查询时数据的更新时间应当在当前秒内(容忍毫秒差)。之所以粗糙是因为没有办法保证每次修改数据的耗时情况。两个线程一读一写,不靠锁很难保证数据准确。奥,对,你也没说不能用锁。