关于java多线程操作同一个map,问为什么有时获取不到map里面的值。

我知道要怎么解决,我是想知道打印也add进去值了,可最后为什么获取不到? 想了解下原因。

第1个回答  2016-08-25
多个线程同时访问一个变量的时候会出现线程安全问题 ,解决办法 同步
synchronized 就可以了追问

知道要怎么解决,我是想知道打印也add进去值了,可最后为什么获取不到? 想了解下原因。

追答

一个线程访问这个方法的时候,另外的线程也可以访问,在返回值得时候,存在同时返回的可能性,这时候就相当于只返回了一次,就导致了一个问题,我是这样理解的 相当于共享变量了

第2个回答  2016-08-25
多线程环境下,直接使用concurrenthashmap,这个api是线程安全的追问

知道要怎么解决,我是想知道打印也add进去值了,可最后为什么获取不到? 想了解下原因。

追答

我这么写就不会出现你的情况你亲 你可以了解一下validate这个关键字 对你有很大的好处

第3个回答  2016-08-25
变量多线程共享的问题,把map做一下同步锁应该可以解决。追问

知道要怎么解决,我是想知道打印也add进去值了,可最后为什么获取不到? 想了解下原因。

本回答被网友采纳
相似回答