Создание нескольких потоков с использованием Java RecursiveTasks

Поэтому я пытаюсь ознакомиться с параллельным программированием в Java, поэтому я написал следующий код

public class Test{
    public static void main(String[] args){
        ForkJoinPool pool = new ForkJoinPool();
        pool.invoke(new Agent());

    }
}

class thread extends RecursiveTask<Integer>{    

    thread(){
        System.out.println("Thread");
    }

    public Integer compute(){ 
        thread x = new thread();
        x.fork();
        return 0;
    }

}

который, насколько я понимаю, должен печатать "Thread" бесконечно, но когда я его запускаю, выведите "Thread" только около 20 раз.

Кто-нибудь знает почему?

1 ответ

Решение

Основной поток выйдет и получит текущее состояние потоков в ForkJoinPool. Вы можете увидеть это с

public static void main(String[] args) 
{
    ForkJoinPool pool = new ForkJoinPool();
    pool.invoke(new MyRecursiveTask());

    try
    {
        Thread.sleep(10000);
    }
    catch (InterruptedException e)
    {
        e.printStackTrace();
    }
}

(Только для иллюстрации, конечно...)

Другие вопросы по тегам