Какие знаешь способы дебага многопоточного кода

«Какие знаешь способы дебага многопоточного кода» — вопрос из категории Многопоточность, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для дебага многопоточного кода в Android можно использовать:

  1. Логирование - добавление логов с Thread.currentThread().name для отслеживания потоков:
Log.d("THREAD_DEBUG", "Current thread: ${Thread.currentThread().name}")
  1. Thread.currentThread().stackTrace - вывод стека вызовов для анализа deadlock'ов

  2. Android Studio Debugger:

    • Точки останова с условиями
    • Suspend policy "All" для остановки всех потоков
    • Просмотр всех потоков в Debug окне
  3. StrictMode для обнаружения операций в UI потоке:

StrictMode.setThreadPolicy(ThreadPolicy.Builder()
    .detectNetwork()
    .penaltyLog()
    .build())
  1. Systrace для анализа производительности и взаимоблокировок

  2. Custom ThreadPoolExecutor с логированием задач

Для сложных случаев лучше использовать комбинацию этих методов.