我正在寻找一种方法来查看当前正在运行的线程数
这将为您提供VM中的线程总数:
int nbThreads = Thread.getAllStackTraces().keySet().size();
现在,如果您希望当前正在执行所有线程,则可以执行以下操作:
int nbRunning = 0;
for (Thread t : Thread.getAllStackTraces().keySet()) {
if (t.getState()==Thread.State.RUNNABLE) nbRunning++;
}
这里列举了可能的状态:Thread.State
javadoc
如果要查看不是通过编程方式而是通过Windows工具运行的线程,可以使用Process
Explorer
。
问题内容: 我有一个多线程的Java项目,我想添加一个方法stop()来停止所有正在运行的线程。问题在于该项目是由其他人开发的,而我不熟悉它如何实现多个线程。 我知道的是,一旦项目开始,就会调用许多线程,并且它们将永远运行。有没有办法找到所有正在运行的线程并停止它们?我进行了很多搜索,找到了如何获取正在运行的线程的列表: 接下来要停止所有正在运行的线程该怎么办? 我想停止这些线程的原因是,我需要将
我之所以要停止这些线程,是因为我需要将这个项目作为一个捆绑包部署到OSGi容器中。一旦包启动,多个线程将永远运行。因此,我需要实现一个destroy()方法来停止所有线程,以控制包的生命周期。 怎么样
问题内容: 标准方法如下: 在这种情况下,如果跟踪当前进程(例如,使用gdb运行或附加到该进程),则ptrace返回错误。 但这有一个严重的问题:如果调用成功返回,则gdb稍后可能不会附加到它。这是一个问题,因为我没有尝试实现反调试的东西。我的目的是在满足条件(即断言失败)并且gdb正在运行时发出“ int 3”(否则,我会得到SIGTRAP来停止应用程序)。 禁用SIGTRAP并每次发出’int
我需要检查运行某段代码的线程是否是主(UI)线程。我怎样才能做到这一点呢?
问题内容: 有什么方法可以获取当前JVM中所有正在运行的线程的列表(包括不是由我的类启动的线程)? 是否还可以获取列表中所有线程的和对象? 我希望能够通过代码做到这一点。 问题答案: 要获得一个可迭代的集合:
问题内容: 我有一个正在运行的线程,但是从外面我无法绕过一个值来停止该线程。如何在内部发送false / true值或调用运行线程的公共方法?当我按下按钮1?例如: 或 跟进(校对): 问题答案: 如果您通过类而不是通过a定义它,则可以调用实例方法。 还要注意,由于多个内核具有自己的关联内存,因此您需要警告处理器该状态可能在另一个处理器上更改,并且它需要监视该更改。听起来很复杂,但只需将’vola