Как я могу узнать, какое количество потоков Dispatchers.IO использует в настоящее время?
Вы можете использовать профилировщик Android для мониторинга потоков.
Инструменты Android-монитора были заменены на Профилировщик Android, в Android-студия 3.0:
Android Profiler - Android Studio 3.0 includes a brand new suite of tools to help debug performance problems in your app. We completely rewrote the previous set of Android Monitor tools, and replaced them with the Android Profiler. Once you deploy your app to a running device or emulator, click on the Android Profiler tab and you will now have access to a real-time & unified view of the CPU, Memory, & Network activity for your app. ...
Для мониторинга потоков используйте Профилировщик ЦП в Android Profiler.
- Click View > Tool Windows > Android Profiler (you can also click Android Profiler in the toolbar).
- Select the device and app process you want to profile from the Android Profiler toolbar. If you've connected a device over USB but don't see it listed, ensure that you have enabled USB debugging.
- Click anywhere in the CPU timeline to open the CPU Profiler.
Как вы можете прочитать, здесь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