Java DropWizard API和内存中持久性-竞争条件
我正在使用DropWizard创建一个简单的演示系统来创建一个简单的RESTAPI,它将只使用Java DropWizard API和内存中持久性-竞争条件,java,race-condition,dropwizard,Java,Race Condition,Dropwizard,我正在使用DropWizard创建一个简单的演示系统来创建一个简单的RESTAPI,它将只使用HashMap和ArrayList进行数据持久化 我想知道有多个请求进入,并且存在读取/写入数据的竞争条件 同步访问这些方法是否足够简单?这会缓解任何潜在问题吗 此演示用于工作面试,因此API上不会有任何重大负载。我只是想解决潜在的问题,我想知道同步方法是否能解决这个问题?谢谢。通过正确锁定不同线程/进程使用的对象来解决争用条件 您可以使用Collections.synchronizedMap()和Co
HashMap
和ArrayList
进行数据持久化
我想知道有多个请求进入,并且存在读取/写入数据的竞争条件
同步访问这些方法是否足够简单?这会缓解任何潜在问题吗
此演示用于工作面试,因此API上不会有任何重大负载。我只是想解决潜在的问题,我想知道同步方法是否能解决这个问题?谢谢。通过正确锁定不同线程/进程使用的对象来解决争用条件 您可以使用
Collections.synchronizedMap()
和Collections.synchronizedList()
来获得正确同步的实例,但如果完整状态由多个对象组成,则这可能不合适
在这种情况下,您应该通过同步对它的所有访问来正确地保护完整状态。然后,您将使用集合实例的非同步版本,但同步对处理所有状态的对象的访问