【问题标题】:Terminate Main Thread without ensuring the termination of threads spawned by it终止主线程而不确保终止由它产生的线程
【发布时间】:2011-05-24 09:28:57
【问题描述】:

我已经实现了一个多线程程序,该程序涉及为每个用户生成一个线程,并执行一些次要活动(不涉及数据库连接等详尽的过程)。主线程无限运行,并通过监视文件创建来处理其终止活动。 我的问题是,是否可以直接终止主线程,而不等待线程完成? (假设线程会自行完成(!),可能是错误的假设)。

【问题讨论】:

    标签: java multithreading thread-safety


    【解决方案1】:

    当然。

    主线程只是其他线程中的一个,它的终止不会影响其他线程(除非您不使用System.exit() 来停止线程......)。

    主线程只是第一个已启动的线程*),但它没有额外或隐藏的特性或功能。


    *) 保持简单 - jvm 可能在 main 之前启动了一些 internal 线程 - 但应用程序没有这些线程的代码

    【讨论】:

      【解决方案2】:

      是的,线程的重点是它们独立运行。

      只有当您的客户端线程作为守护线程启动并且main 是唯一的非守护线程时才有意义。 (在这种情况下,应用程序会在停止时关闭)

      【讨论】:

        【解决方案3】:

        是的,通常大多数应用程序都是这种情况。主线程通常负责启动系统,然后它可以平静地死掉。

        请注意,您并没有真正“终止”主线程,而是让它完成其运行方法。没关系。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-12
          • 2015-01-11
          • 1970-01-01
          • 2012-08-28
          • 1970-01-01
          相关资源
          最近更新 更多