我有使用固定線程池的服務,因爲這個繁重任務的多於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
是的,這正是我需要的。我實現了它,迄今爲止效果很好。在這裏寫下您的評論作爲答案。非常感謝! –