为了减少任务时间,我想将其拆分为254个线程!
for (int i = 1; i < 255; i++) {
final String ipAddress = host + i;
Thread thread = new Thread() {
@Override
public void run() {
// ping IP address
}
};
thread.start();
}
在串行方式中,它需要大约12.7分钟的长度,但是通过使用上面提到的分裂到254个线程,所有IP都会在~3秒内完成!
现在我想知道我的方法有任何潜在的问题吗?或者我是否以有效的方式完成了这项工作?
答案 0 :(得分:1)
通过使用线程池可以提高效率,并节省在每次迭代中创建新线程的开销。尝试在池中使用不同数量的线程并测量运行时间,以便为场景获得最佳配置。
https://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html