我在谈论Thread
个实例,如果他们将Runnable
作为构造函数参数提供,并且您只能执行一次start
方法,那么{{1}类系列重用它们?
PS:我知道并使用比裸线更好抽象的Executors类,我只是出于好奇而问这个。
答案 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
内部类的代码。