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.
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
.