Salve a tutti!
Mi sono appena iscritta al forum.
Sto cercando di imparare come si programma in java…ma confrontando le mie competenze attuali con quelle della maggior parte degli utenti di questo forum, mi rendo conto di essere particolarmente inesperta.
Vi sottopongo un problema che certamente per voi sarà banale, ma non per me: infatti sono alcune ore che cerco di risolverlo senza successo.
Il problema è il seguente:
Un thread mandato in esecuzione dal main esegue una parte di codice in cui viene gestito il turno di gioco di una partita. Se l’esecuzione del suddetto turno non si conclude entro un certo periodo di tempo, il turno deve terminare (restituendo un messaggio di errore).
La mia idea era programmare un altro thread, (lanciato dal trhead che esegue il turno) che gestisce un timer. Se si verifica un timeout, viene sollevata un’eccezione (throw) che si propaga al thread iniziale… peccato che non so trovare il modo di propagare le eccezioni da un thread ad un altro…
Potete aiutarmi per favore?
Grazie
Laura.
P.S. Allego il codice relativo alla gestione del timer:
public
class Timer implements Runnable{
longpreset;
booleanstartTimer;
public Timer (longmaxTime, booleanisPlayerTurn){
this.preset=maxTime; //=2*60*1000; //2 minutes
this.startTimer=isPlayerTurn;
}
privatevoid timeoutCalc ()throws Exception{
longstartTime = System.currentTimeMillis();
longelapsedTime = 0L;
booleantout = false;
while (this.startTimer && !tout) {
elapsedTime = (new Date()).getTime() - startTime;
tout=(elapsedTime >= this.preset);
}
if (tout){
throw(new Exception());
}
}
publicvoid run(){
booleantimeout=false;
try {
timeoutCalc();
}
catch (Exception e) {
/// ????
}
}
}