如何决定是使用 newCachedThreadPool 还是 newFixedThreadPool?
我正在处理一个项目,我需要确保每个线程都在特定范围内工作。例如:
NO_OF_THREADS: 2
NO_OF_TASKS: 10
如果 和 则 每个线程将执行 .所以这意味着2线程将执行。number of threads is 2
number of tasks is 10
10 tasks
20 tasks
在实际情况下,这些数字(任务数和线程数)将非常高,因为它们都可以在我的代码中配置。
在上面的例子中,应该在使用id之间,并且应该使用id之间等等,如果有更多的线程。之后,每个线程将建立数据库连接,然后插入到数据库中。first thread
1 and 10
second thread
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
newCachedThreadPool
nexFixedThreadPool
newCachedThreadPool
newFixedThreadPool
任何人都可以帮我解决我应该在这里选择什么吗?请详细解释我为什么选择这些因素,以便我能够很好地理解这一点。我已经浏览了java文档,但无法决定我应该在这里选择什么。
感谢您的帮助。