ScheduledExecutorService vs Timer vs Handler

Каковы плюсы и минусы использования ScheduledExecutorService/Timer/Handler? Как я понимаю в Android вместо Timer ему нужно использовать Handler, но как насчет ScheduledExecutorService?

Как я понимаю, Handler и ScheduledExecutorService относится только к относительному времени, правильно?

Ответ 1

Все три позволяют выполнять задачи на другом (например, не главном) потоке. Handler позволяет использовать сообщение, передающее шаблон Actor, для безопасного обмена информацией между потоком. Это не позволяет вам делать время/задержки/и т.д.

A ScheduledExecutorService - очень общее решение для управления потоками. Вы инициализируете его определенным числом для рабочих потоков, а затем даете ему рабочие единицы. Вы можете задержать/время и повторить рабочие единицы.

Класс Timer имеет простой API, который похож на ScheduledExecutorService для одноразового использования с одним потоком. Официальный API предлагает не использовать этот класс, а вместо этого использовать собственный ScheduledExecutor.