Je crée un fil pour mon application qui va faire une opération de sortie à un moment donné (seules les heures et les minutes, le jour/le mois n'a pas d'importance). Est-ce la bonne façon de le faire, et aussi la bonne façon de tester le temps? Je suis en train de tester une horloge 24 heures sur 24, pas AM/PM.Test de thread pour le temps
Je suis alors dans une autre classe va appeler quelque chose comme nouveau Thread (new ExitThread()). Start();
public class ExitThread implements Runnable {
public long getDate() {
Date thisdate = new Date(System.currentTimeMillis());
return thisdate.getTime();
}
public long exitDate() {
Date exitdate = new Date(System.currentTimeMillis());
exitdate.setHours(23);
exitdate.setMinutes(30);
exitdate.setSeconds(0);
return exitdate.getTime();
}
public long sleepTime() {
Calendar cal = Calendar.getInstance();
long now = cal.getTime().getTime();
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
long endMillis = cal.getTime().getTime();
long timeToSleep = endMillis - now;
return timeToSleep;
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(sleepTime());
} catch (InterruptedException e) {
e.printStackTrace();
}
if (getDate() >= exitDate()) {
// System exit method here
}
}
}
}
Je vois déjà une grosse faute dans mon code, je dois mettre à jour le currentTime dans ma boucle. – DanielFH