java - 多线程和持久性最佳实践

标签 java multithreading

我有多个线程(大约 40 个)为 java 应用程序中的数百个用户访问持久变量(字符串和长整数)。存储这些变量的最佳方式是什么?变量的读取和写入随时可能发生,我不仅希望最大限度地减少 CPU 负载,而且还希望在变量因为正在写入而不可用时减少影响。

我正在考虑为每个用户创建一个文件,将该用户的所有变量转换成一个字符串,然后在我需要变量时写入或读取该文件。

...或为每个用户(键)创建一个 HashMap 并根据需要添加变量(值)。

是否有一种线程安全的方法来执行此操作,以确保无论何时线程请求一个变量,我都可以确保它获得正确的值?

谢谢。

最佳答案

您知道,我要冒昧地说使用 ConcurrentHashMap。这是最好的方法之一,可以最大程度地减少与大量并发信息的争用,除非有 Disruptor。由于您无论如何都在考虑 HashMap,因此这里的好处是发生的锁定仅限于单个散列行——散列到不同区域的两个项目不会相互阻塞。

关于java - 多线程和持久性最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848892/

相关文章:

java - 将两个数组合并为一个

java - MacOS 多线程问题?

c# - MyThread 和定时器控件的问题

c# - N 个线程异步获取/执行任务

java - 使用正则表达式替换重复的 xml 标签值

java - 在Android中存储大量静态数据

java - Split 函数返回 <Unmatched opening...> 错误

java - 统计分析

multithreading - 只是为阻塞操作启动新线程是不好的做法(Perl)

C++ REST SDK : asynchronous tasks vs. C++11 多线程