これは非常に大きな問題になる可能性があります。
私は1つのサービス(notifierなど)を持っており、このサービスのメソッド[notifyTransaction(Transaction trans)など]の1つはコールバックにリモートで利用できます。
現在、着信トランザクションを読み取り続け、notifier のリモート メソッドを呼び出す (transactionsReader) などの他のサービスがあります。notifyTransaction(Transaction trans).
問題を説明するために、私のトランザクションには複数の操作が含まれていることを付け加えたいと思います。そして、操作を処理するために、私は言う1つの関数を持っていますprocessOperation(Operation op).
これprocessOperation(Operation op)
は実際にデータベースでいくつかの更新を行います。
どうしたの ?notifyTransactions()
サービス transactionsReader は、着信トランザクションを非常に高速で読み取り、メソッドによる操作の処理速度よりもはるかに速い速度で を呼び出していprocessOperation(Operation op)
ます。
私がしたいこと ?notifyTransactions()
multithreadint を使用して、すべてのトランザクションを処理する複数のスレッドを使用したいと考えています。
開始するには、メソッドで使用
ExecutorService executor = Executors.newFixedThreadPool(2);
し、notifyTransactions()
メソッド processOperation(Operation op) のタスクを作成しました。しかし、これにより、呼び出しごとに異なるプールが作成されるnotifyTransactions()
ため、数秒で約 3000 のプールが作成されました。そしてついにメモリ不足になりました。
他に考えられる解決策は何ですか?
前もって感謝します :)