在nio中,您可以从许多套接字获取数据,并且需要将此数据按顺序提供给SSL引擎或http解析器。我一直在考虑使用类似的接口创建一个SessionExecutor(这将有许多线程仍然按顺序保存来自相同键的数据)
public void execute(Object key, Runnable r);
我还希望一个键不要绑定到线程池中的一个线程。当我从key = 1接收东西时,runnable = A,B,C,这些runnables必须运行A,然后运行B,然后运行C,但理想情况下不必运行在同一个线程上(即我们不需要一个密钥)哈希到同一个线程,在同一个哈希/线程上饿死另一个键)。但是,我们希望B runnable在A runnable完成运行之前不会运行。
这最终成为一个非常有趣的算法问题。如果我最终得到1000个套接字,我不确定我是否想拥有1000个队列。如果我只有1个队列,那么我需要查看所有传入的runnable及其密钥,并确保密钥不可运行,并且每次都必须遍历队列。
我希望能比它快一点。
更好的是,这样的事情已经存在吗?我不会碰巧知道任何事情。
编辑:我想更多关于这一点,我倾向于想知道是否有一个好的算法/数据结构可以支持这样的事情,你有一个队列和队列中的N个通道有某种特殊的顺序。或者,如果这是混合数据结构来实现这一点。我想我现在需要某种混合。
答案 0 :(得分:0)
我抓住了这个并想出了类似的东西
我仍然想知道其他东西是否会更高效......不确定,但是过早的优化是所有邪恶的根源......所有这些......我现在就会这样做。