我有多个线程(大约40个)访问java应用程序中几百个用户的持久变量(字符串和长整数)。存储这些变量的最佳方法是什么?读取和写入变量可能随时发生,我不仅要最大限度地减少CPU负载,还要减少因为正在编写变量不可用时的影响。
我正在考虑为每个用户创建一个文件,将该用户的所有变量转换为字符串,并在需要变量时写入或读取该文件。
...或为每个用户(密钥)创建HashMap并根据需要添加变量(值)。
是否有一种线程安全的方法来做到这一点,以确保每当线程请求变量时我可以确定它获得正确的值?
感谢。
答案 0 :(得分:2)
你知道,我打算走出去,说使用ConcurrentHashMap。这是最大限度地减少争用的最佳方法之一,禁止使用Disruptor。既然你正在考虑使用HashMap,那么这里的好处是发生的锁定仅限于各个哈希行 - 哈希到不同区域的两个项不会相互阻塞。
答案 1 :(得分:0)