使用ForkJoin搜索立方体中的字符串(3D维度)是一个不错的选择?

时间:2013-11-28 16:40:18

标签: java multithreading parallel-processing threadpool fork-join

我正在做并行编程项目。要求是在立方体点阵中搜索字符串列表(3D维度,最大值为1000个元素)。列表的最大大小为1000,字符串的最大长度为100。

我创建3个ForkTask:在X维度(NxN 2D阵列)中搜索,在Y维度(NxN 2D阵列)中,在Z维度(NxN 2D阵列)中搜索。对于每个Task,我开始在2D-array中搜索字符串,然后为此创建一个ForkTask。我有一个函数来搜索2D数组中的字符串。

我看到我有很多ForkTask和线程。为了提高搜索性能和减少时间,我检查如果task.join()为true,我将取消其余的任务。

这是明智的做法吗?任何人都可以给我任何建议或建议或建议吗?

由于

1 个答案:

答案 0 :(得分:0)

确定项目中的工作内容。让我们说,从一个方面进行搜索是一项工作。将您的作业实现为可运行的并在Executor中执行它们。 http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Executor.html 如果有超过3个核心,您还可以为每个维度的每个切片使用作业。如果你的工作非常快(10μs以下),你的工作队列的开销可能太大了。