gpt4 book ai didi

java - 让一个线程启动另一个线程然后死掉

转载 作者:行者123 更新时间:2023-12-02 06:11:33 24 4
gpt4 key购买 nike

有 3 个线程:主线程(运行 main() 的线程)、线程 A线程 B

操作顺序:

  • 程序启动(main())
  • 主线程实例化并启动线程 A
  • 线程 A 在 X 秒后实例化线程 B
  • 线程 B 已启动。
  • 线程 B 在 X 秒后实例化线程 A
  • 线程 A 已启动。

如果对线程 B 的调用是在线程 A 的可运行状态中执行的最后一个语句,线程 A 将在之后终止线程 B 已实例化并启动?或者线程 B 是否会嵌套在线程 A 中,从而创建无限数量的嵌套线程?默认行为是什么以及如何实现不创建无限数量的线程(我希望每个先前的线程在 child 存活时结束)。

Thread.join() 会导致线程等待,直到子线程死亡,对吗?

如果这只是一种不好的做法,那么任何人都可以推荐基本上可以完成相同任务的替代方案吗?我需要一个函数在几秒钟后调用另一个函数,然后该函数将与第一个函数同时运行。第一个函数将在完成一些命令后终止。几秒钟后,第二个函数应该调用第一个函数的新实例。该循环应继续下去,直到被主线程中止(或直到​​程序退出)。

最佳答案

您的问题包含答案:您将线程视为任务或“要运行的函数”,但它们不是。线程执行任务,因此请围绕可以创建其他任务的任务的想法来设计代码。任务只是实现 Runnable 的对象界面,仅此而已。您可以使用它们所需的所有数据构建这些任务(或可运行对象),甚至包括对其他(父)任务的引用。
创建一个CachedThreadPool每当任务准备好执行时,使用 execute 将任务转储到线程池中。方法。

您需要考虑的一件事是程序关闭:您需要关闭线程池才能正常关闭程序。您只需调用shutdownNow即可,但您可能想要设计一种技术,让重要任务有机会完成然后关闭。这需要一些练习才能正确(例如 shutdownHooks 并不容易),但从那时起,只要您需要超过 1 个线程,您就可以重复使用它。

关于java - 让一个线程启动另一个线程然后死掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com