有没有办法暂停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 中暂停和恢复 Files.walkFileTree?