Допустим, у меня есть несколько объектов запроса из класса MyRequest
. Я хочу, чтобы пакетные запросы вместе. Как следствие, у меня есть реализация Runnable
, которая группирует эти запросы в соответствии с некоторыми правилами (запросы передаются в качестве параметра). Давайте назовем это MyBatchedRequestHandler
Для одновременного выполнения нескольких пакетов я использую ExecutorService
.
Теперь, что произойдет, если я создам такой ExecutorService
в теле метода - без внешней ссылки на него? - и выполнить новый Runnable
экземпляр для моего запроса. Например:
public void execute(Collection<MyRequests> requests){
Executors.newSingleThreadExecutor().execute(new MyBatchedRequestHandler(requests));
}
Из-за того, что нет ссылок на экземпляры ExecutorService
, я предполагаю, что это может быть сборщик мусора (даже если он еще не завершил запросы). .. Правильно ли мое предположение? Тем не менее, все еще есть ссылка на объекты запроса ... Это мешает сборщику мусора собирать его?