Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当客户机可以从(java项目)中获得值时,更新映射的好方法是什么?_Java_Multithreading_Hashmap - Fatal编程技术网

当客户机可以从(java项目)中获得值时,更新映射的好方法是什么?

当客户机可以从(java项目)中获得值时,更新映射的好方法是什么?,java,multithreading,hashmap,Java,Multithreading,Hashmap,在JavaWeb项目中,我有一组JavaBean要缓存,因此,我使用java.lang.HashMap来存储这些对象,每次客户端发出http请求时,都会从这个映射中获取这些对象。但是有时候,这个map需要更新一些对象,在多线程环境中,我担心一个线程更新map的对象时,另一个线程会对这个map进行get操作,如下所示: 线程-1: map.put("user:1001", userObject); 线程-2: User userObject = map.get("user:1001"); 我不

在JavaWeb项目中,我有一组JavaBean要缓存,因此,我使用java.lang.
HashMap
来存储这些对象,每次客户端发出http请求时,都会从这个映射中获取这些对象。但是有时候,这个map需要更新一些对象,在多线程环境中,我担心一个线程更新map的对象时,另一个线程会对这个map进行get操作,如下所示:

线程-1:

map.put("user:1001", userObject);
线程-2:

User userObject = map.get("user:1001");

我不想使用同步策略,那么当客户端可以从中获取值时,更新映射
的好方法是什么呢?

为什么不想同步呢?也许对你有用。这听起来像是想对代码< HashMap <代码>进行读写,以原子方式和线程安全的方式进行。考虑<代码> CONCURNESHASMAP 。因为从这个映射中有大量的客户端请求数据,因此,同步GET会增加获取操作的时间,这就是我不想要的。按照coolguy的建议使用ConcurrentHashMap。读取操作不会被此锁定。所以这对get不会有太大影响。只有写操作被锁定。