koz*_*her 0 java multithreading
我目前正在处理一个脚本,它为Mongo服务器的每个数据库进行一些检查和插入.这是多线程的.
for (int i = 0; i < countDatabase; i++) {
new threadDatabase(database.get(i).toString()).start();
}
Run Code Online (Sandbox Code Playgroud)
问题:我有16个数据库要解析...我担心脚本将被设置的PC,将无法管理16个(或更多)线程...
任何想法如何处理大量的线程?我听说过pool,但不确定它是否可以处理我作为参数发送的数据库名称...
谢谢
16个线程不是很多线程.当然,它可能比你拥有CPU核心的线程更多,但是如果你正在与远程数据库交谈,你很可能花费大部分时间等待I/O完成,因此CPU不会成为限制因子.
除此之外,线程池可以正常工作:
ExecutorService executorService = ...;
for (int i = 0; i < countDatabase; i++) {
final String dbName = database.get(i).toString();
executorService.submit(new Runnable(){
@Override
public void run() {
parseDatabase(dbName);
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |