有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java让一个线程启动另一个线程,然后死亡

有3个线程:主线程(Main()在其上运行的线程)、Thread AThread B

操作顺序:

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

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

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

如果这只是一般的坏习惯,有人能推荐基本上能完成相同任务的替代方案吗?我需要一个函数,在几秒钟后调用另一个函数,该函数将与第一个函数同时运行。在完成一些命令后,第一个函数将消失。然后,第二个函数应在几秒钟后调用第一个函数的新实例。此循环应继续,直到主线程中止(或直到程序退出)


共 (1) 个答案

  1. # 1 楼答案

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

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