单作者/多读者的性能与同一作者/读者线程的性能

时间:2019-12-24 10:46:55

标签: java performance concurrency

我有一个“订单管理器”应用程序,并且我遵循“单一作者”方法来处理订单事件,以避免出现任何竞争情况。

因此,只有一个主线程(EVENT-PROCESSOR-MAIN)侦听传入的订单事件并对其进行处理,而无需进行任何阻塞调用以保持处理速度。该线程还读取内存中的静态数据缓存,以丰富/验证事件。

我想了解通过主线程访问内存中静态数据的最有效方式。

主线程本身是否也应该负责维护内存中的静态数据,以使所有线程只有一个线程,从而实现最大CPU吞吐量?

我应该使用单独的专用线程将静态数据存储在ConcurrentHashmap中,并与我的主线程(单个编写器,不同的读取器线程)共享此映射。我在某处读到,只要有一个写线程,就可以使用特殊通道在CPU内核之间优化阅读器线程的访问。但是,再次使用第二种方法,我仍然必须使用并发映射,这将带来与线程和锁相关联的延迟。我想听一听关于最好的方法以达到最大吞吐量的观点。

0 个答案:

没有答案