Разве плохо иметь много живых HandlerThreads, ничего не делая, просто ожидая?
Я использую Handler
в сочетании с HandlerThread
все в моем проекте Android. Я использую большинство из них в Сервисах. Там мои обработчики, поддерживаемые отдельным HandlerThread с низким приоритетом, создаются в onCreated()
и остановился в onDestroy()
,
Многие из них просто ждут все время. Например, они обрабатывают вещи в течение нескольких секунд каждые пять минут.
Всего в моем приложении около 20 потоков (половина из них - HandlerThreads). Итак, это проблема с производительностью, когда столько потоков открыто? В плохо ли иметь потоки, ожидающие в Java? Я узнал, что это должно быть правильно. Я просто хочу проверить, относится ли это к HandlerThread
также.
1 ответ
Около 20? Наверное, не так уж и плохо. Это может немного снизить производительность планировщика ядра, но до тех пор, пока вы не достигнете предела ОС и не опрашиваете, незанятые потоки не загружают ЦП. Хотя они могут занимать память, поэтому не держитесь за ссылки, которые вам абсолютно не нужны в этих потоках.