【发布时间】:2013-07-22 12:33:58
【问题描述】:
我有一个实现 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 的下一次测试必须由线程 N 3 执行(如果它还活着))
谢谢。
【问题讨论】:
-
这样做的目的是什么?我没有看到。可能有很多情况,如果 N 3 很忙或者它不再存在等等。
-
简而言之 - 目的是避免竞争条件并使用相同的 RID 执行 MyRunnables,以便将它们提交给 ThreadPoolExecutor。
-
关于案例,如上所述:如果线程 N3 不存在不再存在,ThreadPoolExecutor 必须创建新线程,“id”为 3。如果线程忙,则必须在线程空闲之前执行此任务.
标签: java multithreading threadpool threadpoolexecutor