保证池中仅执行一个具有特定 id 值的 Runnable 对象的设计模式

2024-02-08

假设我有一个有序列表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(使用前将#替换为@)

保证池中仅执行一个具有特定 id 值的 Runnable 对象的设计模式 的相关文章

随机推荐