Pregunta ¿Las expresiones lambda en Java8 se ejecutan en múltiples subprocesos?


En Java8, expresiones lambda fueron presentados. Esta pregunta es sobre cuándo se ejecutan las lambdas paralelas.

Antes de Java8, Llamado-las clases eran una forma de ejecutar varios subprocesos a la vez. Callables pueden ser utilizados con Ejecutor-Clases a ejecutar. Supongamos que estoy usando un Grupo de subprocesos fijos, utilizando 3 como número de tareas de procesamiento activo. Y asumamos que tengo 8 tareas. Fixed Thread Pool comenzaría las tres primeras tareas, y cuando termine, se iniciará la siguiente tarea, hasta que se completen las 8 tareas.

¿Qué pasaría si implemento mis tareas como Java8-lambdas? ¿Se iniciarían los 8 a la vez? ¿O secuencialmente? ¿O de alguna manera inteligente?

En especial, ¿se ejecutan en el mismo hilo que la persona que llama (sin usar un Exeuctor)? Por su naturaleza, supongo que las lambdas podrían ejecutarse en otro hilo fácilmente.


5
2018-05-06 12:58


origen


Respuestas:


Runnable r = () -> System.out.println("hello");

es equivalente a

Runnable r = new Runnable() {
    @Override
    public void run() {
        System.out.println("hello")
    }
};

Y no cambia nada a cómo se ejecuta un ejecutable. Si envía su ejecutable a un grupo de subprocesos, el grupo de subprocesos lo ejecutará, sea lo que sea que haya utilizado para crear su ejecutable: una lambda, una clase anónima o una clase de nivel superior. Al final, lo que defines es una instancia de Runnable, y eso es lo único que importa.


11
2018-05-06 13:01