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

时间:2019-04-10 08:34:47

标签: android kotlin kotlin-coroutines

我怎么知道Dispatchers.IO当前正在使用多少线程?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

Android Monitor tools中将

Android Profiler替换为Android 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.   
  3. 从Android Profiler工具栏中选择要配置的设备和应用进程。如果您已通过USB连接设备,但未在其中列出设备,请确保已启用USB调试。
  4.   
  5. CPU 时间轴上的任意位置单击以打开CPU Profiler。
  6.   

发件人:https://stackoverflow.com/a/50691178/2675353