Billing クラスには、Country wise Billing に関連するすべてのロジックがあります。データベースから結果を取得し、ユーザーに請求します。請求クラスは Runnable を実装します。膨大な数のユーザー (500 万以上) が非常に高速に請求されるように、国のパラメーターに従って請求を並行して実行したいと考えています。現在、完了するまでに何時間もかかります。
Billing クラスを実行するために ThreadPoolExecutor を実装しようとしていますが、その方法がわかりません。次の違いは何ですか、または私は何か間違ったことをしていますか? 提案してください!!全部で20カ国ありますが、ここに貼っているのは5カ国だけです。
//for 20 countries ThreadPoolExecutor (20,20,20.......)????
ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 5, 5, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(10), new ThreadPoolExecutor.CallerRunsPolicy());
executor.execute(new Billing("UK"));
executor.execute(new Billing("USA"));
executor.execute(new Billing("Germany"));
executor.execute(new Billing("Spain"));
executor.execute(new Billing("Italy"));
また
ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 5, 5, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(10), new ThreadPoolExecutor.CallerRunsPolicy());
for(int i=0;i<5;i++) // for 20 countries i<20??
{
executor.execute(new Billing("UK"));
executor.execute(new Billing("USA"));
executor.execute(new Billing("Germany"));
executor.execute(new Billing("Spain"));
executor.execute(new Billing("Italy"));
}
while (! executor.isTerminated()) {
try{
executor.awaitTermination(100, TimeUnit.SECONDS);
}catch(InterruptedException iE)
{
iE.printStackTrace();
System.out.println("Executor Exception: "+ iE);
}
前もって感謝します!!