它是一种干净的方式来使用线程进行100个独立的小型本地搜索工作吗?

问题描述 投票:0回答:1

目前我正在研究搜索算法的实现。在算法的特定步骤中有超过100个对象(生成的解决方案),通过本地搜索得到改进。为了加快算法速度,我想使用线程。所以每个本地搜索都应该在自己的线程中运行,一旦每个“搜索线程”完成,算法就应该继续。

码:

for(int i = 0; i < x; i++){
    list[i].localSearch();
}

问题:为100多个工作启动多个线程是一种好/干净的方式吗?如何在for循环(变量i)中启动新线程而不定义新的runnable类。谢谢你的帮助。

java multithreading algorithm optimization java-threads
1个回答
2
投票

为100多个工作启动多个线程是一种好/干净的方式吗?

事实上,如果您可以将问题划分为并行作业,则通常会使用多个线程

你必须考虑 - 是你的任务计算绑定(你正在搜索内存,进行计算,......)然后你可以使用多个线程,但是如上所述,线程数应该接近核心数(对于纯计算任务,你可以在这里试验)

如果你的任务是从磁盘读取很多,使用更多线程甚至可能会损害整体性能。

如何在for循环(变量i)中启动新线程而不定义新的runnable类。

我建议使用ExecutorService,它作为具有处理线程池的作业队列

有很多tutorials只搜索一些

© www.soinside.com 2019 - 2024. All rights reserved.