package br.uff.ic.gems.peixeespadacliente.thread;
import br.uff.ic.gems.peixeespadacliente.model.agent.LocalManagerAgent;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Heliomar
*/
public class ThreadDeadLine extends Thread {
// 5 seconds
public static int SLEEP_TIME = 5000;
private Thread threadSupervisioned;
private long deadLine;
private LocalManagerAgent agentPeixeEspada;
public ThreadDeadLine(Thread threadSupervisioned, long deadline, LocalManagerAgent agentPeixeEspada) {
this.threadSupervisioned = threadSupervisioned;
this.deadLine = deadline;
this.agentPeixeEspada = agentPeixeEspada;
}
@Override
public void run() {
while (deadLine > 0 && !agentPeixeEspada.isFinalizeByError()) {
try {
this.sleep(SLEEP_TIME);
deadLine -= SLEEP_TIME;
} catch (InterruptedException ex) {
Logger.getLogger(ThreadDeadLine.class.getName()).log(Level.SEVERE, null, ex);
agentPeixeEspada.printError(ex);
}
}
agentPeixeEspada.requestFinishWork();
while (!agentPeixeEspada.isStopped()) {
try {
this.sleep(SLEEP_TIME);
} catch (InterruptedException ex) {
Logger.getLogger(ThreadDeadLine.class.getName()).log(Level.SEVERE, null, ex);
agentPeixeEspada.printError(ex);
}
}
threadSupervisioned.interrupt();
this.interrupt();
}
}