关于java多线程

假如说有两个线程,一个thread1,一个thread2,thread1负责修改数据(每秒一次),thread2负责查询数据处理(三秒一次),thread2对thread1修改的那条数据查询....
请问?如何保证thread2每次查出来的数据都是最新的、?


回答:

粗糙的一个想法就是利用update_time(如果有的话),毕竟你的场景是有一个时间间隔在的。如果线程启动的比较理想是“同时”的,那查询时数据的更新时间应当在当前秒内(容忍毫秒差)。之所以粗糙是因为没有办法保证每次修改数据的耗时情况。两个线程一读一写,不靠锁很难保证数据准确。奥,对,你也没说不能用锁。


回答:

将变量设置为 volatile 不就可以了吗?


回答:

thread1改完之后推送可以吗,thread2都不需要了。
或者改为生产者-消费者模式,thread2每3秒取一次消息并取时间最晚的


回答:

同步锁即可,把查询和修改加上同一个锁,这样在修改的时候无法查询,在查询的时候无法修改,由于查询和修改中间都有较长时间间隔,而操作本身时间又非常短,从体验上是感觉不到任何问题的。

以上是 关于java多线程 的全部内容, 来源链接: utcz.com/p/944181.html

回到顶部