固定スレッドプールを使用するサービスがあります。この重いタスクの10個以上のインスタンスが私のサーバーに多すぎるためです。私はそれをのようなものを使用ExecutorServiceにn個のスレッドとn個の対応するオブジェクトがあります
ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(10);
:
Runnable command = new Runnable() {
@Override
public void run() {
MyHeavyClassWithCache myHeavyClassWithCache=new MyHeavyClassWithCache();
}
};
Future<ScreenImage> feature = executor.submit(command,myHeavyClassWithCacheResult);
を今、私はまた、唯一のn MyHeavyClassWithCacheクラスの(10)のインスタンスを持っている必要があります。また、エグゼキュータで何とか再利用する必要があります(今のように作成する方がずっと早い)。 ExecutorServiceでこのようなことをどうやって管理できますか? 目標は、MyHeavyClassWithCacheクラスの10個のインスタンス(同時に同じインスタンスを持つスレッドは1つもありません)を使用して、同時に最大10個のスレッドを処理することです。
これは、これを達成するためのデザインパターン。
あなたが探しているのはオブジェクトプールです。 commons-poolを使用してithttp://commons.apache.org/proper/commons-pool/ – seneque
を実装することができます。これは私が必要とするものです。私はそれを実装し、これまでのところうまく動作します。答えとしてここにあなたのコメントを書いてください。どうもありがとう! –