CompletableFuture y la basura Colección

kantianethics:

Me gustaría disparar muchos de no intervención de uno asíncrono CompletableFutures, así:

for (Job job : jobs) {
 CompletableFuture.supplyAsync(() -> job.process())
   .whenComplete(this::doSomething);
}

Lo ideal sería que estos CompletableFutures podrían ser basura recogida después whenCompleteha terminado. Pero, ¿existe un riesgo de que se recogen de antemano, ya que no estoy almacenar una referencia?

Sotirios Delimanolis:

Usted no está almacenando una referencia explícita, pero supplyAsynces, a nivel interno. El método crea una CompletableFuturey presenta una tarea a la ForkJoinPool(si va a utilizar la piscina común) que tiene una parte posterior referencia a él. El CompletableFuturedevueltos por whenCompleteconvierte en dependiente en la que la primera CompletableFuturey así también se hace referencia.

Todos estos objetos estarán disponibles para la recolección de basura una vez que la ForkJoinPoolejecución de la ultima Supplier, es la primera CompletableFuturetan completa, desencadena la segunda CompletableFuture, y ejecuta la BiConsumerpasó a whenComplete.

Estás seguro.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=202084&siteId=1
Recomendado
Clasificación