当客户机可以从(java项目)中获得值时,更新映射的好方法是什么?
在JavaWeb项目中,我有一组JavaBean要缓存,因此,我使用java.lang.当客户机可以从(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"); 我不
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不会有太大影响。只有写操作被锁定。