java.util.concurrent类如何重用线程?

时间:2013-04-20 21:56:12

标签: java multithreading concurrency

我在谈论Thread个实例,如果他们将Runnable作为构造函数参数提供,并且您只能执行一次start方法,那么{{1}类系列重用它们?

PS:我知道并使用比裸线更好抽象的Executors类,我只是出于好奇而问这个。

1 个答案:

答案 0 :(得分:4)

传递给执行程序线程的runnables(让我们称之为R)实际上包装在其他runnables中(让我们称之为W)。 W的run()方法的伪代码是

while (threadMustRun) {
    wait for new R to be submitted and assigned to this thread
    execute R.run()
}

实际上比这更复杂,但你应该明白这个想法。要真正理解它的作用,请查看ThreadPoolExecutor.Worker内部类的代码。