Зачем закрывать сразу после создания newSingleThreadScheduledExecutor? - PullRequest
1 голос
/ 10 января 2020

projectreactor 3.3.1 имеет класс reactor.core.scheduler.ElasticScheduler, который содержит этот код:

this.exec = Executors.newSingleThreadScheduledExecutor();
this.exec.shutdownNow();

Зачем это делать?

Служба ExecutorService может быть закрыта, что приведет к отклонению новых задач , поэтому созданный выше ScheduledExecutorService станет бесполезным.

1 Ответ

2 голосов
/ 10 января 2020

... созданный выше ScheduledExecutorService станет бесполезным.

Бесполезно, если вы на самом деле хотите отправить ему задачи для выполнения, да.

Зачем это делать?

Проще говоря, чтобы получить службу исполнителя, которая всегда отклоняет новые задачи, переданные ей, никогда не выполняя ни одну из них. В текущей реализации ElasticScheduler он используется для поля SHUTDOWN, которое является CachedService, возвращаемым методом pick() после удаления планировщика вложения.

Поэтому в этом случае использования оно имеет смысл, поскольку вы явно не хотите, чтобы какие-либо новые задачи планировались после вызова dispose().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...