【发布时间】:2014-02-17 17:24:06
【问题描述】:
有 3 个线程:主线程(运行 main() 的线程)、Thread A 和 Thread B。
操作顺序:
- 程序启动 (main())
- 主线程实例化并启动
Thread A。 -
Thread A在 X 秒后实例化Thread B。 -
Thread B已启动。 -
Thread B在 X 秒后实例化Thread A。 -
Thread A已启动。
如果对Thread B 的调用是Thread A 的runnable 中执行的最后一条语句,那么Thread A 会在Thread B 被实例化并启动后终止吗?或者Thread B 会嵌套在Thread A 中,从而创建无限数量的嵌套线程?默认行为是什么,我将如何完成不创建无限数量的线程(我希望每个先前的线程在孩子存活时结束)。
Thread.join() 会导致线程等待子线程死亡,对吗?
如果这只是一般的不好的做法,任何人都可以推荐基本上可以完成相同任务的替代方案吗?我需要一个函数在几秒钟后调用另一个函数,然后该函数将与第一个函数同时运行。第一个函数将在完成一些命令后终止。然后,第二个函数应该在几秒钟后调用第一个函数的新实例。这个循环应该一直持续到被主线程中止(或直到程序退出)。
【问题讨论】:
-
如果您不想继续实例化和销毁一堆线程,您可以随时查看工作线程池。这个想法是线程留在周围并被赋予它们所做的工作单元,然后等待更多的工作。好处是您不会因为不断杀死和生成线程的开销而浪费时间。
标签: java multithreading