各スレッドが特定の範囲で動作していることを確認する必要があるプロジェクトに取り組んでいます。例えば:
NO_OF_THREADS: 2
NO_OF_TASKS: 10
If number of threads is 2
and number of tasks is 10
then 各スレッドが実行され10 tasks
ます。つまり、2 つのスレッドが実行され20 tasks
ます。
実際のシナリオでは、これらの数 (タスクの数とスレッドの数) は非常に高くなります。どちらも私のコードで構成できるからです。
上記の例では、 first thread
id between1 and 10
を使用する必要があり、さらにスレッドがあれば、second thread
id 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
。だから今、私は疑問に思っています-コードでnewFixedThreadPool
orを使用する必要がありますか? newCachedThreadPool
現在、私は使用していnexFixedThreadPool
ます。どの要因を選択すればよいかnewCachedThreadPool
、またはを決定できませんnewFixedThreadPool
。それが、自分のコードで何をしようとしているかというシナリオを投稿した理由です。
ここで何を選択すればよいか、誰か助けてもらえますか? そして、私がこれをよく理解できるように、どのような要因でそれを選択するのかを詳細に説明してください. 私はすでに Java ドキュメントを調べましたが、ここで何を選択すればよいか判断できません。
助けてくれてありがとう。