我正在做并行编程项目。要求是在立方体的网格中搜索字符串列表(3D维度,最大是1000个元素)。列表最大长度为1000,字符串最大长度为100。
I create 3 ForkTask: search in X-Dimension(NxN 2D-ForkTask),in Y-Dimension(NxN 2D-ForkTask),in Z-Dimension(NxN 2D-array)。对于每个任务,我开始在2D-array中搜索字符串,并为此创建一个ForkTask。我有一个在2D-array中搜索字符串的函数。
我看到我有很多ForkTask和线程。为了提高搜索性能和减少时间,我检查如果task.join()为真,我将取消其余的任务。
这是一种明智的方法吗?有人能给我任何建议或建议或建议吗?
谢谢
发布于 2013-11-29 03:58:34
在你的项目中确定什么是工作。比方说,在一个维度上搜索是一项工作。将您的作业实现为可运行程序,并在Executor中执行它们。http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Executor.html如果有3个以上的核心,您还可以为每个维度的每个切片使用一个作业。如果您的作业非常快(低于10µs),则作业队列的开销可能太大。
https://stackoverflow.com/questions/20271074
复制相似问题