Logo Studenta

Tema 14 Clase 14 - Executor framework

¡Estudia con miles de materiales!

Vista previa del material en texto

CLASE 14
MODELO DE DESARROLLO DE PROGRAMAS Y PROGRAMACION 
CONCURRENTE
FAC.DE INGENIERIA - UNJu
Executor framework
INTERFACE EXECUTOR SERVICE
La interface java.util.concurrent.ExecutorService permite gestionar la programación concurrente de 1
forma + sencilla y optima, representa 1mecanismo de ejecuciones asíncronas p/ejecutar tareas en 
2do.plano, se encuentra en el paquete java.util.concurrent. Ej.de ExecutorService:
ExecutorService executor = Executors.newCachedThreadPool(); // Inicia 1pool de threads
// Ejecuta un thread del pool.
executor.execute(new Runnable() {
@Override
public void run() {
System.out.println("Tiempo: " + System.currentTimeMillis());
}
});
System.out.println("Tiempo 2: " + System.currentTimeMillis());
// Finalizamos el pool.
executor.shutdown();
Executors: Es la clase proveedora de ExecutorServices, q 
permite obtener 1serie de implementaciones estándar
El Mét.estático
newCachedThreadPool: retorna 1de 
las implementaciones estándar 
p/ExecutorServices, q mantiene en 
cache los hilos de ejecución, si no 
existe 1hilo de ejecución disponible 
crea 1nuevo y los hilos en cache q no 
se usan x 60 segundos se destruyen. 
No tiene límite de hilos a crear.
Mét.execute: es el encargado de realizar la ejecución de 1hilo, recibe 1objeto 
q implementa la interface Runnable en la cual se define el proceso a ejecutar.
Mét. shutdown: baja de forma segura todos los hilos de ejecución creados.
Florencia
Resaltado
Florencia
Resaltado
OTRAS IMPLEMENTACIONES DE LA CLASE EXECUTORS
newFixedThreadPool: crea 1 pool de hilo de ejecuciones con 1tamaño fijo, si se trata de ejecutar 1 tarea 
nueva cuando todos los hilos de ejecución están trabajando, este último debe esperar y si algún hilo 
muere x1falla durante su ejecución, uno nuevo será creado en el pool cuando sea solicitado.
newScheduledThreadPool: también crea un pool de hilos, pero estos pueden ser agendados p/ejecutarse 
en cierto momento o periódicamente.
newSingleThreadExecutor: crea 1pool de 1 solo hilo de ejecución, q obliga a q las tareas sean ejecutadas 
de manera secuencial, si el hilo muere x la falla de ejecución, crea 1nuevo en la sig. petición.
newSingleThreadScheduledExecutor: similar a las 2 anteriores, es 1pool de 1solo hilo pero este puede ser 
agendado p/ejecutarse en cierto momento o periódicamente.
Instancia de la clase ThreadPoolExecutor: personaliza 1instancia de la clase ThreadPoolExecutor.
Instancia de la clase ScheduledExecutorService: es igual a la anterior pero permite personalizar 1 instancia 
de ScheduledExecutorService. 
OTRAS FORMAS DE USAR EXECUTORSERVICE
Método submit (Runnable): al igual q execute recibe un Runnable, pero en este caso retorna 1objeto 
de tipo Future, la idea de este es poder conocer en q momento el hilo finalizó su ejecución. Ej.
// Inicia 1pool de threads.
ExecutorService executor = Executors.newCachedThreadPool();
// Ejecuta 1 thread del pool.
Future future = executor.submit(new Runnable() {
@Override
public void run() {
System.out.println("Tiempo: " + System.currentTimeMillis());
}
});
// Retorna null cuando el hilo de ejecucion finalizo.
System.out.println(future.get());
executor.shutdown(); // Finaliza el pool.
OTRAS FORMAS DE USAR EXECUTORSERVICE (CONT)
Método submit (Callable): similar a la anterior pero recibe 1objeto de tipo Callable.
Método invokeAny: ejecuta 1lista de objetos Callable y como resultado obtiene el valor retornado x 1 
de ellos, aunque no se puede tener certeza de cual.
Método invokeAll: similar al anterior pero recibe 1lista de Callable, con la diferencia q en esta se recibe 
1 lista de objetos Future, de los cuales se podrá monitorear el resultado final.
SCHEDULEDEXECUTORSERVICE
Extiende de ExecutorService, aparece xq ciertas tareas necesitan ejecutarse de 1manera programada, 
como la ejecución de 1 tarea dada a intervalos determinados o en un momento específico. Se 
encuentra en el paquete java.util.concurrent. Ej.de ExecutorService:
ScheduledExecutorService executor = Executors.
newSingleThreadScheduledExecutor();
ScheduledFuture future = executor.schedule(
new Callable<String>() {
@Override
public String call() throws Exception {
return "Ya pasaron 10 segundos.";
}
}, 10, TimeUnit.SECONDS);
System.out.println(future.get());
executor.shutdown();
Clase ScheduledFuture: Representación futura de la 
ejecución del thread.
Método schedule: Recibe 3parámetros, el 1ro.1objeto 
Callable el cual contiene el proceso a ejecutar x el 
Thread. El 2do.parámetro es 1entero q representara el 
tiempo a esperar p/la ejecución. La unidad de 
tiempo a medir la enumeración se llama TimeUnit
Mét.execute: es el encargado de realizar la ejecución de 
1hilo, recibe 1objeto q implementa la interface Runnable
en la cual se define el proceso a ejecutar.
Mét. shutdown: baja de forma segura todos los hilos de ejecución creados.
OTRAS FORMAS DE USAR SCHEDULEDEXECUTORSERVICE
Método Schedule (Runnable): similar al ej.anterior con la diferencia q el parámetro no es un objeto 
Callable sino un objeto Runnable:
ScheduledExecutorService executor = Executors.
newSingleThreadScheduledExecutor();
ScheduledFuture future = executor.schedule(
new Runnable() {
@Override
public void run() {
System.out.println("Ya pasaron 10 segundos");
}
}, 10, TimeUnit.SECONDS);
future.get();
executor.shutdown();
Método scheduleAtFixedRate: Maneja 2 tiempos, el de espera p/la 1ra.ejecución y el tiempo de 
ejecuciones sucesivas luego de ocurrida la 1ra.
Método scheduleWithFixedDelay: La forma de ejecución es similar a la anterior con la diferencia q las 
ejecuciones sucesivas esperan la finalización de la ejecución anterior:
• Página web consultada, accedidas en Octubre de 2.018: 
o http://aquiseprograma.co/2015/10/como-utilizar-java-lang-concurrent-
executorservice/
o http://aquiseprograma.co/2015/10/como-utilizar-
scheduledexecutorservice/
BIBLIOGRAFÍA CONSULTADA
http://aquiseprograma.co/2015/10/como-utilizar-java-lang-concurrent-executorservice/
http://aquiseprograma.co/2015/10/como-utilizar-scheduledexecutorservice/

Continuar navegando

Materiales relacionados

196 pag.
Tema 2 Memoria compartida

User badge image

Materiales Generales

21 pag.
55 pag.