我正在做并行编程项目。要求是在立方体点阵中搜索字符串列表(3D维度,最大值为1000个元素)。列表的最大大小为1000,字符串的最大长度为100。
我创建3个ForkTask:在X维度(NxN 2D阵列)中搜索,在Y维度(NxN 2D阵列)中,在Z维度(NxN 2D阵列)中搜索。对于每个Task,我开始在2D-array中搜索字符串,然后为此创建一个ForkTask。我有一个函数来搜索2D数组中的字符串。
我看到我有很多ForkTask和线程。为了提高搜索性能和减少时间,我检查如果task.join()为true,我将取消其余的任务。
这是明智的做法吗?任何人都可以给我任何建议或建议或建议吗?
由于
答案 0 :(得分:0)
确定项目中的工作内容。让我们说,从一个方面进行搜索是一项工作。将您的作业实现为可运行的并在Executor中执行它们。 http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Executor.html 如果有超过3个核心,您还可以为每个维度的每个切片使用作业。如果你的工作非常快(10μs以下),你的工作队列的开销可能太大了。