关于 多线程访问同一实例

两个线程。一个线程对于这个实例写操作(改变这个实例的某些属性值)

一个线程对于这个实例读操作(读这个实例的某个属性值)

 

问题一:

那么,如果我就这样,不进行lock的话,会不会出现两个线程同时写/读而出现冲突?(即使几率很低)

 问题二:

那么如果我lock的话,lock第一个线程的写方法,lock第二个线程的读方法,结果是:当正在执行第一个线程的写方法时, 第二个线程的读方法由于无法读取这个实例而被阻塞,直到这个实例被第一个线程写完。

不知道我这样理解的对吗?因为我看网上几乎所有例子都是多个现成共同执行同一段代码,所以只lock一个方法。


吃鸡游戏
浏览 279回答 2
2回答

撒科打诨

就算你LOCK不代表读线程就能读到最新数据,CPU是有缓存的。当然并发频率不高是没问题的

萧十郎

内存是满足可读可写的,同时读写本身是不存在问题的。这个冲突取决于你所认为 —— 比如写了一半,但读可判断,可抛弃或其他;
打开App,查看更多内容
随时随地看视频慕课网APP