我有使用固定线程池的服务,因为这个繁重任务的多于10个实例对我的服务器来说太多了。具有n个线程和n个相应对象的ExecutorService
ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(10);
我使用它是这样的:
Runnable command = new Runnable() {
@Override
public void run() {
MyHeavyClassWithCache myHeavyClassWithCache=new MyHeavyClassWithCache();
}
};
Future<ScreenImage> feature = executor.submit(command,myHeavyClassWithCacheResult);
现在我需要MyHeavyClassWithCache类的也只有N(10)的实例。而且还需要以某种方式在执行程序中重用它(比现在快得多,然后创建它)。 如何使用ExecutorService管理这类事情。 目标是利用我的MyHeavyClassWithCache类的10个实例之一以达到最多10个线程同时工作(从来没有两个线程与在同一时间同一实例!)
我希望这是足够共同存在的一些Java设计模式来实现这一点。
你在找什么是一个对象池。你可以使用commons-pool来实现ithttp://commons.apache.org/proper/commons-pool/ – seneque
是的,这正是我需要的。我实现了它,迄今为止效果很好。在这里写下您的评论作为答案。非常感谢! –