java - "Routing"threadpoolexecutor 内的任务

标签 java multithreading threadpool threadpoolexecutor

我有一个实现 Runnable 的类

public class MyRunnable implements Runnable {
    private long RID = <SOME_LONG_ID_VALUE>;
    public long getRID() { return this.RID; }
    public void run {
        System.out.println("HAI!");
    }
}

有没有办法通过RID字段在ThreadPoolExecutor内“路由”任务(我的意思是,如果线程N 3使用RID = 1运行Runnable,那么下一个使用RID = 1的tast必须由线程N 3执行(如果它还活着)) 谢谢。

最佳答案

据我了解,对于每个 RID,您都有一个执行上下文,并且您希望针对该上下文连续执行所有 MyRunnable 对象。

您的错误是您尝试将该上下文链接到线程。通过 Actor 更好地表示该上下文。您可以使用众所周知的 Actor 框架,例如 Akka,但为了您的目的,简单 Actor implementation会起作用的。

编辑: 另一种观点:由于Actor实现有唯一的接口(interface)方法execute,所以它可以被认为是一个串行执行器,串行运行提交的任务。由于它没有自己的线程池,而是使用另一个执行器,在所有 Actor 之间共享,因此可以称为辅助执行器。

关于java - "Routing"threadpoolexecutor 内的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17810202/

相关文章:

.net - 线程池与专用线程 - 何时选择哪个

java - 如何查找等待执行的可运行对象的数量

java - 单击时更改按钮的背景颜色,然后打开一个新 Activity

java - Hazelcast 为基于谓词的聚合供应商抛出 java.io.NotSerializedException

.net - 如何监控 MVC4 中的异步/等待死锁?

c - 从另一个进程的线程 ID 获取线程句柄

c - 读写器访问多个读者

java.lang.NoClassDefFoundError Windows

java - Spring Boot + Oauth2 客户端凭据

c - 多线程 Web 服务器的线程池