目前我正在研究搜索算法的实现。在算法的特定步骤中有超过100个对象(生成的解决方案),通过本地搜索得到改进。为了加快算法速度,我想使用线程。所以每个本地搜索都应该在自己的线程中运行,一旦每个“搜索线程”完成,算法就应该继续。
码:
for(int i = 0; i < x; i++){
list[i].localSearch();
}
问题:为100多个工作启动多个线程是一种好/干净的方式吗?如何在for循环(变量i)中启动新线程而不定义新的runnable类。谢谢你的帮助。
为100多个工作启动多个线程是一种好/干净的方式吗?
事实上,如果您可以将问题划分为并行作业,则通常会使用多个线程
你必须考虑 - 是你的任务计算绑定(你正在搜索内存,进行计算,......)然后你可以使用多个线程,但是如上所述,线程数应该接近核心数(对于纯计算任务,你可以在这里试验)
如果你的任务是从磁盘读取很多,使用更多线程甚至可能会损害整体性能。
如何在for循环(变量i)中启动新线程而不定义新的runnable类。
我建议使用ExecutorService,它作为具有处理线程池的作业队列
有很多tutorials只搜索一些