1.3 - NotificadorEvento.java

package br.aiec;

/**
* Essa classe representa o mecanimos chamador do Callback nas suas duas formas:
* síncrona ou assíncrona. O modo de funcionamento dependerá do método a ser chamado pela classe Principalxxx.java,
* onde xxx deve ser substituido por Sincrono ou Assincrono.
*
*
*
*/

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class NotificadorEvento implements Runnable {
private String tipoCallback;

private EventoInteresse evento;

private boolean ehNumeroPar(int aleatorio)
{
return aleatorio % 2 == 0;
}

public NotificadorEvento(EventoInteresse evento) {
this.evento = evento;
}

@Override
public void run() {
int contador = 0;

int aleatorio = 0;

try {
do {
aleatorio = (int) (Math.random() * 3000);

if (ehNumeroPar(aleatorio)) {
//chamada ao método de Callback toda vez que o número aleatório for um número PAR
evento.algoAconteceu(tipoCallback, aleatorio);
}

Thread.sleep(aleatorio);
} while (contador++ < 10);

System.out.println("Thread secundária (Callback) finalizou");
} catch (InterruptedException e) {
e.printStackTrace();
}
} /**
* Método que executa o Callback de modo assíncrono
*/
public void inicializarEventoAssincrono() {
tipoCallback = "ASYNC";

ExecutorService pool = Executors.newFixedThreadPool(1);

pool.execute(this);

pool.shutdown();
}

/**
* Método que executa o Callback de modo síncrono
*/
public void inicializarEventoSincrono() {
tipoCallback = "SYNC";

run();
}
}
Copyright © 2016 AIEC.