JavaのExecutorについて知りましたが、私のニーズに合っているかどうかを考えています。私は、タスクが常に追加されるデータベースを持っています。何千もの動的なタスクがある場合にExecutorを使用するには?
I SQLデータベースからすべての行(タスク)をSELECTします。いつでも、100,000、200,3、または0が存在する可能性があります。
私はすべての例を見るには、このようなものです:
ExecutorService taskExecutor = Executors.newFixedThreadPool(50); while(...) { taskExecutor.execute(new MyTask()); }
それは私のシナリオに調整することができる方法? MyTaskのインスタンスを100000インスタンス化するだけでは、1トンのメモリが無駄になります。
仕上げが完了するまで待つ必要がありますか?最初のものが5秒で終了し、最後のものが終了するまで長い間使われないままになるので、私たちは時間を無駄にするでしょうので、100000のタスクが終了するまで待つことはできません。これを行うには
データベースからすべてのタスクを同時に照会するのはなぜですか?代わりに、作業する容量(1つしかない可能性がある)と同数のタスクを照会し、作業が完了して容量が増えたら再度照会する必要があります。 –