主线程启动引擎线程,同时保存引擎的线程引用,用于在超时时调用该线程的interrupt方法,来终止该线程。
正常情况下,引擎线程结束后,要移除该线程的引用。
主线程启动引擎后立刻退出,因而不知道引擎线程何时结束,因此主线程在启动引擎线程的同时也启动一个钩子线程,钩子线程去等待引擎线程执行完毕,然后移除引擎线程的引用。
如果存在引擎的分组执行,引擎执行则有先后顺序,那么引擎的后续执行由钩子线程来调用,再次创建下一个引擎线程和下一个钩子线程,该钩子线程结束。
单个引擎关注数据镜像的逻辑,它不关心引擎的执行顺序。