Tengo que devolver algo de un hilo

dotMatthew:

Necesito crear más hilos por lo que uno de mis amigos me dio algo de código para un "ThreadBuilder" pero no puedo volver de un hilo. Necesito ahora un poco de ayuda para hacer esto. Alguna pieza de código también sería grande.

He tratado probado con una serie final de un elemento y con referencia Atómica pero no funcionó como se esperaba.

package net.test;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;

public class ThreadBuilder {

    private static String API_QUEUE = "API QUEUE";
    private static int threads = 0;

    private static final ExecutorService queue;

    static {
        ThreadFactory threadBuilder = r -> {
            Thread thread = new Thread(r, ThreadBuilder.API_QUEUE + ++ThreadBuilder.threads);
            thread.setDaemon(true);
            return thread;
        };
        queue = Executors.newCachedThreadPool(threadBuilder);
    }

    public static void run(Runnable runnable) {
        queue.execute(runnable);
    }

    public static ExecutorService getQueue() {
        return queue;
    }

}
Andy Turner:

Utilizar Callable, y devolver el resultado de la queue.submit:

public static <T> Future<T> run(Callable<T> callable) {
    return queue.submit(callable);
}

Cuando la Futurehaya completado, se puede obtener el resultado utilizando Future.get.


También me gustaría señalar que su ThreadBuilderclase es peor que simplemente utilizando un ExecutorServicedirectamente. Por ejemplo, no puede apagar su señal ejecutor, terminación Await etc. Además, se está introduciendo un enlace a esa clase, que hace las cosas más difíciles de aislar estática, prueba etc.

Sería mejor simplemente para tener un método de fábrica estática para crear el ExecutorService, y luego interactuar con el ExecutorServicedirectamente.

Supongo que te gusta

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