各スレッドが特定の範囲で動作していることを確認する必要があるプロジェクトに取り組んでいます。例えば:
NO_OF_THREADS: 2
NO_OF_TASKS: 10
If number of threads is 2and number of tasks is 10then 各スレッドが実行され10 tasksます。つまり、2 つのスレッドが実行され20 tasksます。
実際のシナリオでは、これらの数 (タスクの数とスレッドの数) は非常に高くなります。どちらも私のコードで構成できるからです。
上記の例では、 first threadid between1 and 10を使用する必要があり、さらにスレッドがあれば、second threadid between を使用する必要があります。11 and 20その後、各スレッドはデータベース接続を確立し、データベースに挿入します。
だから私は正常に動作している以下のコードを持っています。
public static void main(String[] args) {
    final int noOfThreads = 2;
    final int noOfTasks = 10;
    //create thread pool with given size 
    ExecutorService service = Executors.newFixedThreadPool(noOfThreads);
    // queue some tasks 
    for (int i = 0, int nextId = 1; i < noOfThreads; i++, nextId += noOfTasks) {
        service.submit(new ThreadTask(nextId, noOfTasks));
    }
}
class ThreadTask implements Runnable {
    private final int id;
    private int noOfTasks;
    public ThreadTask(int nextId, int noOfTasks) {
        this.id = nextId;
        this.noOfTasks = noOfTasks;
    }
    public void run() {
    //make a database connection
        for (int i = id; i < id + noOfTasks; i++) {
        //insert into database
        }
    }
}
私の質問:-
私はインターネットでさまざまな記事を調べていて、 について読みましたnewCachedThreadPool。だから今、私は疑問に思っています-コードでnewFixedThreadPoolorを使用する必要がありますか? newCachedThreadPool現在、私は使用していnexFixedThreadPoolます。どの要因を選択すればよいかnewCachedThreadPool、またはを決定できませんnewFixedThreadPool。それが、自分のコードで何をしようとしているかというシナリオを投稿した理由です。
ここで何を選択すればよいか、誰か助けてもらえますか? そして、私がこれをよく理解できるように、どのような要因でそれを選択するのかを詳細に説明してください. 私はすでに Java ドキュメントを調べましたが、ここで何を選択すればよいか判断できません。
助けてくれてありがとう。