作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想模拟一个分布式系统,在其中,我应该以分布式(如果可以的话并行!!)的方式对信息(供应)进行研究,例如我有以下类(class):
public class Group{
public int identifier;
public int[] members;
public String name;
public String[] supplies;
public int[] neighbors;}
有很多组,每个组都有一个名字,由成员、邻居和供应品列表组成,每个成员都有一些信息和列表,其他组可能包含相关信息和供应品,等等。
1- 我想研究供应,首先:在一个组内,如果我找不到所需的供应,我应该在与该组相邻的所有组内进行搜索,我想做这个使用多线程,我的意思是,如果搜索失败,我应该使用多个线程同时在所有其他邻居中进行搜索,每个线程考虑一个邻居,如果我有 10 个邻居,那么应该创建 10 个线程....
2- 现在,如果我想在第一时间开始重新搜索多个组,我的意思是从 3 或 4 个组或更多组开始,每个组寻找不同的供应,或相同的... . + 调用搜索的一组可能是另一组的邻居...
所以,我的问题是如何使用线程实现这种情况?
PS.我有一台单处理器单核的机器,我不关心执行时间(开销),我只想模拟这个问题......
感谢您的每一次回复,并致以最诚挚的问候。
最佳答案
由于您遇到 CPU 限制问题,因此使用的最佳线程数可能是您拥有的内核数。我会确保每个线程有大约 100 微秒的工作,否则您会发现您的开销比有用的工作更多。例如您可能会发现搜索 10K 个节点大约需要 100 us 的工作量。如果您不小心,多线程应用程序可能比单线程应用程序慢很多倍。
所以我会找到一种方法来划分工作,以便每个线程有大约 1K 到 100K 个节点,并将并发限制为您拥有的核心数量。
关于java - 如何对这种情况进行多线程处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6021312/
我是一名优秀的程序员,十分优秀!