“这是因为执行compute()方法的线程本身也是一个Worker线程,当对两个子任务调用fork()时,这个Worker线程就会把任务分配给另外两个Worker,但是它自己却停下来等待不干活了!”
compute()
fork()
这样的话,使用只有一个work-thread的ForkJoinPool,是不是就会造成deadlock?因为第一个worker会一直等待新增的task,而后者又没机会执行。
但是我在实际测试时,发现能正常执行,而且都在同一个线程中。
join方法本身也会去执行task,
Sign in to make a reply
李其仔
“这是因为执行
compute()
方法的线程本身也是一个Worker线程,当对两个子任务调用fork()
时,这个Worker线程就会把任务分配给另外两个Worker,但是它自己却停下来等待不干活了!”这样的话,使用只有一个work-thread的ForkJoinPool,是不是就会造成deadlock?因为第一个worker会一直等待新增的task,而后者又没机会执行。
但是我在实际测试时,发现能正常执行,而且都在同一个线程中。