我有一个“订单管理器”应用程序,并且我遵循“单一作者”方法来处理订单事件,以避免出现任何竞争情况。
因此,只有一个主线程(EVENT-PROCESSOR-MAIN)侦听传入的订单事件并对其进行处理,而无需进行任何阻塞调用以保持处理速度。该线程还读取内存中的静态数据缓存,以丰富/验证事件。
我想了解通过主线程访问内存中静态数据的最有效方式。
主线程本身是否也应该负责维护内存中的静态数据,以使所有线程只有一个线程,从而实现最大CPU吞吐量?
或
我应该使用单独的专用线程将静态数据存储在ConcurrentHashmap中,并与我的主线程(单个编写器,不同的读取器线程)共享此映射。我在某处读到,只要有一个写线程,就可以使用特殊通道在CPU内核之间优化阅读器线程的访问。但是,再次使用第二种方法,我仍然必须使用并发映射,这将带来与线程和锁相关联的延迟。我想听一听关于最好的方法以达到最大吞吐量的观点。