3

我是相当新的Java Threads,我通常使用 C 来进行并行化。并行化与它遵循的具有相同模式的算法:

void traverse(node* p)
{
    if (p->left)
        #pragma omp task // p is firstprivate by default
        traverse(p->left);
    if (p->right)
        #pragma omp task // p is firstprivate by default
        traverse(p->right);
}

例如,我会使用 的任务指令openMP

任务描述

当线程遇到任务构造时,会从相关结构化块的代码中生成任务。遇到的线程可以立即执行任务,或推迟执行。在后一种情况下,可以为团队中的任何线程分配任务。使用任务同步结构可以保证任务的完成。任务构造可以嵌套在外部任务中,但内部任务的任务区域不是外部任务的任务区域的一部分。

我的问题是:

我怎样才能实现同样的想法(任务)Java Threads

4

1 回答 1

1

OpenMP 的编译指示确实使并行化更容易一些。

在 Java 中,您首先需要创建一个实现 Runnable 的类。
- 示例:公共类遍历实现 Runnable

然后你只需要创建类并调用'run'来启动线程。

private void traverse(node p) 
{
   Traverse t = null;

    if (p.left)
       t = new Traverse(p.left);
    if (p->right)
       t = new Traverse(p.right)

    t.run();   // start thread. this call will not wait for run to finishes
}
于 2012-11-12T23:40:01.307 回答