java - java中 Activity 线程数中的后台线程是多少?

标签 java multithreading executorservice

我正在使用具有 10 个固定线程的 ExecutorService。

  ExecutorService service = Executors.newFixedThreadPool(10);

当我试图找出使用的线程数时

  System.out.println(Thread.activeCount());

输出从 11 到 15 不等。

我知道其中一个线程是主线程。

但是其他线程是什么?

最佳答案

Java 中有一些线程在后台运行,例如用于调用 finalize() 方法的终结器。您可以通过查看最父的 ThreadGroup 来打印它们:

ThreadGroup group = Thread.currentThread().getThreadGroup();
while (group.getParent() != null) {
  group = group.getParent();
}
Thread[] threads = new Thread[group.activeCount()];
group.enumerate(threads);
Arrays.stream(threads).forEach(System.out::println);

它会输出类似的东西

Thread[Reference Handler,10,system]
Thread[Finalizer,8,system]
Thread[Signal Dispatcher,9,system]
Thread[Attach Listener,5,system]
Thread[main,5,main]
Thread[Monitor Ctrl-Break,5,main]

在您的示例中,Thread.activeCount()Thread.currentThread().getThreadGroup().activeCount() 的简写,因此您正在查看顶部 -大多数当前线程组。

关于java - java中 Activity 线程数中的后台线程是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50251314/

相关文章:

java - 带有 rtl 布局方向的 api 17 和 18 的 Tablayout 问题

c# - 并行运行测试时为 WebApi OWIN 自主机获取免费端口

java - 将 Web 内容集成到桌面 Java 应用程序中

java - 复杂的正则表达式 - 这可能吗?

用于输入数据的 Java 8 Stream 实用程序

multithreading - Scala Process 退出但不清理线程

php - pthreads const 字符串损坏

java - 使用 shutdownNow() 方法时获取我使用 ScheduledThreadPoolExecutor 计划的 Runnable 对象

java - 如何避免使用递归调用使 executorservice 拥塞/停滞/死锁

java - 即使所有线程都完成后,应用程序也会挂起几分钟