package javaapplication3;
/**
*
* @author luxo
*/
public class Myrunnable implements Runnable{
@Override
public void run() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
Si se necesita que el hilo devuelva valores al proceso que lo invoca se debe usar Callable que permite
devolver valores después de que se haya completado su ejecución.
/**
* PROCESO para enviar en paralello en varios therad que usan Future para
* hacer join de los thread Si necesito que mi hilo devuelva valores al
* proceso que lo invoca tengo que usar Callable que permite devolver
* valores después de que se haya completado su ejecución.
*
* @param listEquipos
* @param operacion
* @return
*/
private List ejecutarEnParalelo(HashMap listEquipos) {
List> callables = new ArrayList>();
List> futures = new ArrayList>();
ExecutorService pool = Executors.newFixedThreadPool(fraudThreadCount);
for (Map.Entry entry : listEquipos.entrySet()) {
callables.add(new TaskCallable(entry.getValue()));
}
for (Callable c : callables) {
futures.add(pool.submit(c));
}
ArrayList respuesta = new ArrayList();
for (Future f : futures) {
try {
respuesta.add(f.get());
} catch (Exception e) {
e.printStackTrace();
}
}
return respuesta;
}
Clase que implementa el Callable:(Cuando metamos los Callables en el Executor)
/**
* Clases para ejecucion en paralelo
*/
class TaskCallable implements Callable {
SplunkFile file;
TaskCallable(SplunkFile file) {
this.file = file;
}
@Override
public RespuestaPPBAM call() throws Exception {
return NotificaFraude(file);
}
}
este devolverá un java.util.concurrent.Future, que permite comprobar el estado de un Callable.
OJO con las variables o metodos static que se usen en los Callable, estos pueden arrojar null si se detienen en tiempo de ejecución.
No hay comentarios.:
Publicar un comentario