Skip to content

2 La Interfaz Executor

La interfaz Executor

La interfaz Executor es una interfaz funcional que implementan (indirectamente) todos los ejecutores que iremos estudiando, y que posee el método execute(runnable)para enviar al ejecutor una tarea en forma de objeto runnable para que sea ejecutada en alguno de los hilos que gestiona. La llamada al método no retornará ningún valor.

public interface Executor {
    void execute(Runnable command);
}

El método lanzará la excepción NullPointerException si le pasamos null como runnable, o RejectedExecutionException si la tarea no pudo ser aceptada para su ejecución, por ejemplo porque el ejecutor ya ha sido terminado, como estudiaremos más adelante.

La interfaz Executor tiene importantes limitaciones:

  • Sólo admite enviar tareas en forma de objetos runnable. Dado que el método run() de los runnables no retorna un valor, es complicado hacer que una tarea retorne un valor a quién lo haya llamado.
  • No proporciona ninguna forma de hacer un seguimiento del progreso de la ejecución de las tareas runnable enviadas al ejecutor, cancelar la tarea, o simplemente determinar cuándo ha concluido su ejecución.
  • No proporciona una forma directa de ejecutar una colección de runnables.
  • No proporciona a la aplicación una forma de terminar (detener) un ejecutor y sus hilos, liberando los recursos obtenidos.

Como veremos más adelante, estas limitaciones serán solventadas por la interfaz ExecutorService, que extiende Executor.