有没有办法暂停Java中主要线程的所有线程?

Posted

技术标签:

【中文标题】有没有办法暂停Java中主要线程的所有线程?【英文标题】:Is there a way to pause all threads from the main one in Java? 【发布时间】:2021-09-12 22:17:05 【问题描述】:

基本上就是这样。假设我有一个有 6 个线程的程序(包括主线程)。有没有办法暂停/睡眠/暂停主线程中的所有其他 5 个线程?假设通过获取他们的 ID,然后用它来暂停他们所有人(或通过任何其他方法)。

【问题讨论】:

Thread.suspend() 和一些支持方法已被弃用并且不再有效(查看 Java 文档)。除了一些本土的方法,我不知道其他方法。甚至那些也可能引入由挂起引起的相同死锁问题。 【参考方案1】:

这将为您提供迄今为止创建的应用程序的所有线程

Set<Thread> threadSet = Thread.getAllStackTraces().keySet();

要停止线程,您必须编写自己的自定义线程类,如本示例中所述,它使用标志来控制线程执行

https://www.baeldung.com/java-thread-stop

在迭代线程集时threadSet设置标志的值以使其停止

【讨论】:

以上是关于有没有办法暂停Java中主要线程的所有线程?的主要内容,如果未能解决你的问题,请参考以下文章

Java如何实现线程的暂停和重新启用?求大神

有没有办法在 Java 中暂停和恢复 Files.walkFileTree?

C#中关于Thread.sleep(1000)的问题!!

线程的停止和暂停

java中ExecutorService的线程池如何暂停所有的任务和继续所有的任务? 有这样的函数吗?

java线程暂停,优雅结束并中止