我对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实现相同的想法(任务)?

最佳答案

OpenMP的实用性确实使并行化稍微容易一些。

在Java中,您首先需要创建一个实现Runnable的类。
-示例:公共(public)类遍历实现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
}

10-04 12:57