繁体   English   中英

应用服务器中的Java并发

[英]Java Concurrency in app server

我有一个带有CRUD操作的小型Web应用程序。 对于数据,我不能使用db,所以我必须将它存储在地图或类似的数据结构中。 根据要求,我需要两个地图来存储和访问数据,我必须确保它们彼此同步。 现在,问题是,在多线程环境中对两个映射进行crud操作的首选方法是什么,以确保它们处于一致状态。 是否有更好的方法或模式来避免锁定和同步?

谢谢

我认为必须有一些同步。 您可以尝试以下方法。 首先为两个地图使用ConcurrentHashMap 然后将您的映射封装在将具有同步方法的对象中,以确保您的数据处于一致状态。 以下是一个例子:

public class ParentMap {
   private ConcurrentHashMap<String, Object> map1 = new ConcurrentHashMap<>();
   private ConcurrentHashMap<String, Object> map2 = new ConcurrentHashMap<>();

   public synchronized void add(Object objectToAdd) {
      // Add to map1 
      // Add to map2
   }

   public synchronized void update(String key, Object object) {
      // Update the object based on the key on both maps (following the rules of your application)
   }

   public synchronized void delete(String key) {
      // Delete in both maps following the rules of your application
   }

   public Object get(String key) {
      // Use the rules of your application to read
   }
}

确保应用程序中只有一个ParentMap对象。 您可以使用Singleton模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM