【发布时间】:2011-05-24 09:28:57
【问题描述】:
我已经实现了一个多线程程序,该程序涉及为每个用户生成一个线程,并执行一些次要活动(不涉及数据库连接等详尽的过程)。主线程无限运行,并通过监视文件创建来处理其终止活动。 我的问题是,是否可以直接终止主线程,而不等待线程完成? (假设线程会自行完成(!),可能是错误的假设)。
【问题讨论】:
标签: java multithreading thread-safety
我已经实现了一个多线程程序,该程序涉及为每个用户生成一个线程,并执行一些次要活动(不涉及数据库连接等详尽的过程)。主线程无限运行,并通过监视文件创建来处理其终止活动。 我的问题是,是否可以直接终止主线程,而不等待线程完成? (假设线程会自行完成(!),可能是错误的假设)。
【问题讨论】:
标签: java multithreading thread-safety
当然。
主线程只是其他线程中的一个,它的终止不会影响其他线程(除非您不使用System.exit() 来停止线程......)。
主线程只是第一个已启动的线程*),但它没有额外或隐藏的特性或功能。
*) 保持简单 - jvm 可能在 main 之前启动了一些 internal 线程 - 但应用程序没有这些线程的代码
【讨论】:
是的,线程的重点是它们独立运行。
只有当您的客户端线程作为守护线程启动并且main 是唯一的非守护线程时才有意义。 (在这种情况下,应用程序会在停止时关闭)
【讨论】:
是的,通常大多数应用程序都是这种情况。主线程通常负责启动系统,然后它可以平静地死掉。
请注意,您并没有真正“终止”主线程,而是让它完成其运行方法。没关系。
【讨论】: