假设我有一个有序列表Runnable
要执行的对象ExecutorService
. My Runnable
对象有一个userID
已提交 - 假设我有关于20不同的userId
-s and 10是池中的线程数(ExecutorService
目的)。
确保最多 1 个的通用设计模式是什么?Runnable
特定组的对象同时在一个线程中执行? (目标是所有Runnable
来自一个 id 组的命令应按时间顺序同步执行)。
您可以为每个组创建队列,当任务终止时,您可以读取相应的队列并根据需要提交下一个任务。
为此,您需要以某种方式确定 Runnable 何时终止。使用标准 JDK 类,您无法真正以简单的方式做到这一点,而是使用Guava https://code.google.com/p/guava-libraries/库中,您可以将 ExecutorService 包装到 ListeningExecutorService 中。如果您通过此包装器提交任务,它将返回您聆听未来 https://code.google.com/p/guava-libraries/wiki/ListenableFutureExplained而不是简单的 Java Future。 ListenableFuture 将允许您注册将在任务终止时执行的回调。在这些回调中,您可以检查队列并提交同一组中的下一个任务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)