Как я мог узнать, какое количество потоков использует конкретный диспетчер сопрограмм? - PullRequest
2 голосов
/ 10 апреля 2019

Как я могу узнать, сколько потоков использует Dispatchers.IO в настоящее время?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2019

Как вы можете прочитать здесь 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 голосов
/ 10 апреля 2019

Вы можете использовать профилировщик Android для мониторинга потоков.

Инструменты Android Monitor заменены на Android Profiler , в Android Studio 3.0 :

Android Profiler - Android Studio 3.0 включает в себя новый набор инструментов, помогающих устранять проблемы с производительностью в вашем приложении.Мы полностью переписали предыдущий набор инструментов Android Monitor и заменили их на Android Profiler.После развертывания приложения на работающем устройстве или эмуляторе щелкните вкладку Android Profiler, и теперь у вас будет доступ к унифицированному представлению о процессоре, памяти и сети для вашего приложения в режиме реального времени....

Для мониторинга потоков используйте CPU Profiler в Android Profiler.

  1. Нажмите View> Tool Windows> Android Profiler (вы также можете нажать Android Profiler на панели инструментов).
  2. Выберите устройство и процесс приложения, который вы хотите профилировать, на панели инструментов Android Profiler,Если вы подключили устройство через USB, но не видите его в списке, убедитесь, что вы включили отладку USB.
  3. Щелкните в любом месте на временной шкале CPU , чтобы открыть Profiler CPU.

От: https://stackoverflow.com/a/50691178/2675353

...