En el java.util.functionpaquete 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.langno 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.
Runnableestá desactualizado en este momento, porque un Runnable también es utilizado por otras clases que Thread( Executorpor ejemplo).
Runnables solo pueda ser .run()por Threads. De hecho, se usan muy comúnmente para exactamente el propósito descrito en la pregunta
java.util.function paquete.