En el java.util.function
paquete de Java 8 , tenemos:
- Función : toma un argumento, produce un resultado.
- Consumidor : toma un argumento, no produce nada.
- Proveedor : no toma argumentos, produce un resultado.
- ... : Otros casos que manejan primitivas, 2 argumentos, etc.
Pero necesito manejar el caso " no toma argumento, no produce nada ".
No hay nada para esto en java.util.functionnal
.
Entonces, la pregunta es:
¿Cuál es el nombre de ' una función que no toma argumentos y no devuelve nada '?
En Java 8, su definición sería:
@FunctionalInterface
public interface InsertANameHere {
void execute();
}
El ejecutor ya existe y tiene otro propósito: " Un objeto que ejecuta tareas ejecutables enviadas ". La firma no coincide ( execute(Runnable):void
) y ni siquiera es una interfaz funcional .
Runnable existe, pero está fuertemente vinculado al contexto de subprocesos:
- El paquete
java.lang
no lo esjava.util.function
. - El javadoc dice: " La interfaz Runnable debe ser implementada por cualquier clase cuyas instancias estén destinadas a ser ejecutadas por un hilo ".
- El nombre "Runnable" sugiere un código en ejecución dentro de un hilo.
Runnable
está desactualizado en este momento, porque un Runnable también es utilizado por otras clases que Thread
( Executor
por ejemplo).
Runnable
s solo pueda ser .run()
por Thread
s. De hecho, se usan muy comúnmente para exactamente el propósito descrito en la pregunta
java.util.function
paquete.