我怎么知道特定协程调度程序使用的线程数?

问题描述 投票:2回答:2

我怎么知道Dispatchers.IO目前使用的线程数是多少?

android kotlin kotlin-coroutines
2个回答
2
投票

正如你可以阅读here Dispatchers.IO没有自己的线程池,它使用共享池。 Dispatchers.Default使用相同的线程池。没有简单的方法来获取Dispatchers.IO目前使用的活动线程。但您可以尝试在共享线程池中获取线程计数。常见的线程池是在CommonPool.kt内部创建的。它可以创建自己的游泳池或使用ForkJoinPool。池中创建的所有线程都具有特定名称。因此,您可以按名称查找共享池的所有活动线程。

val threads = Thread.getAllStackTraces().keys.filter {
    it.name.startsWith("CommonPool") || it.name.startsWith("ForkJoinPool")
}
threads.size

0
投票

您可以使用Android分析器来监控线程。

Android Monitor toolsAndroid ProfilerAndroid Studio 3.0取代:

Android Profiler - Android Studio 3.0包含一套全新的工具套件,可帮助调试应用中的性能问题。我们完全重写了之前的Android Monitor工具集,并将其替换为Android Profiler。将应用程序部署到正在运行的设备或模拟器后,单击Android Profiler选项卡,您现在可以访问应用程序的CPU,内存和网络活动的实时统一视图。 ...

要监视线程,请在Android Profiler中使用CPU Profiler

  1. 单击视图>工具窗口> Android Profiler(您也可以单击工具栏中的Android Profiler)。
  2. 从Android Profiler工具栏中选择要分析的设备和应用程序进程。如果您已通过USB连接设备但未看到它已列出,请确保已启用USB调试。
  3. 单击CPU时间轴中的任意位置以打开CPU Profiler。

来自:https://stackoverflow.com/a/50691178/2675353

© www.soinside.com 2019 - 2024. All rights reserved.