getAllThreads 函数用于获取当前Java虚拟机中所有活动线程的信息。它通过获取当前线程的线程组,然后不断向上遍历,直到找到根线程组。接着,利用 enumerate 方法将所有线程枚举到一个数组中,并返回这个数组。
getThreadNames 函数调用 getAllThreads 函数获取所有线程对象后,使用 map 方法提取每个线程的名称,形成一个新的数组并返回。这个数组包含了所有活动线程的名称。
stopThread 函数用于尝试终止指定名称的线程。它遍历所有线程对象,寻找名称与传入参数 threadName 匹配的线程。若找到匹配的线程,则调用该线程的 interrupt 方法,这是一种请求线程停止的方式。需要注意的是,interrupt 方法仅会设置线程的中断状态,并不会强制终止线程,线程必须自身检查中断状态并决定如何响应。如果成功设置了中断状态,函数会返回一个成功消息;如果在尝试终止线程的过程中发生了异常,函数会捕获该异常并返回包含错误信息的消息。如果没有找到任何与 threadName 匹配的线程,函数会返回一个未找到线程的消息。
最后,代码提供了一个简单的使用示例,展示了如何打印当前所有线程的名称,以及如何尝试终止一个特定名称的线程。printl 函数被用来输出信息到控制台(假设该函数已经定义并且能够正确工作)。
需要注意的是,终止线程的方式应该是安全且被线程本身所支持的,否则可能会导致程序处于不稳定状态。interrupt 方法是一种比较温和的方式来请求线程停止,并不是所有线程都实现了对中断的响应 |