java如何按特定键的顺序处理事件
我没有为我的问题找到一个好的题目
我有一个接收事件的侦听器,每个事件都有一个对象id。因为一些操作需要一些时间来处理,所以我切换到一个同步处理(每次处理一个事件,锁定侦听器)到一个固定的线程池执行器(有10个线程)
问题是,对于特定的对象id,我仍然希望按照事件发出的相同顺序处理事件
问题是对象id是随机的,我不能为每个对象id预先声明线程
如果我想简化它:假设我有一个线程数组,每个id为0的事件都将通过索引0处的线程处理,对于每个id为1的事件,它们将通过索引1处的线程处理
如果id在一个范围内,比如0到10,它工作得很好,但这不是我的情况,它们可以有任何int值
# 1 楼答案
要处理对象ID的事件,您需要确保它正在进入同一个线程进行处理。要做到这一点,您可以计算对象ID的哈希值,然后根据您拥有的线程数对其进行修改,这将确保相同的对象ID由相同的线程或相同的线程池处理
现在,要存储线程或线程池进行处理,可以使用并发HashMap