【发布时间】:2012-08-19 02:50:43
【问题描述】:
我有一个问题似乎与Executors 和线程池所做的很接近,但我似乎无法让它完全适合。基本上我有一些工人需要一些时间来初始化并且我想集中起来,一旦他们准备好我就用它们来工作。我需要在线程中执行此操作:
worker = buildExpensiveWorker();
worker.doWork(work1);
worker.doWork(work2);
worker.doWork(work3);
...
虽然 Executor 只允许我这样做:
doWork(work1);
doWork(work2);
doWork(work3);
...
我需要编写自己的线程池吗?重写已经做得很好的东西感觉很可惜。还是我需要使用ThreadLocal 来持有我的工人,并从Runnable 的run() 方法内部管理他们?
【问题讨论】:
-
您可能应该使用
ThreadPoolExecutor并重构您当前的设计,使其适合没有自定义“工人”。如果您不想这样做,那么是的,您可能需要实现自己的。
标签: java multithreading executor