Welche Möglichkeiten gibt es in Java, jede Sekunde etwas auszuführen?
3 Antworten
Ich nehme immer Timer:
javax.swing.Timer
Beispiel:
Timer timer = new Timer(1000, actionEvent -> {
// Do smth
});
// Nicht sicher, ob das nötig ist:
timer.setRepeats(true);
timer.start();
Ok ich habe das Problem behoben.
Danke für deine Antwort!
AAAAAAAAAAHHH WIE STOPPT MAN DAS???????
Ich habe das aus dem Code rausgelöscht und es wird immer noch ausgeführt!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Bittehelfensiemir ich werde vollgespamt!
timer.stop() funktioniert nicht!!!!!!!!!!!!!!!!!!!!!!
Sehe gerade, dass 'ScheduledExecutorService' wirklich die bessere Wahl wäre.
Wahrscheinlich nicht unbedingt einfacher, aber deutlich besser!
Im direkten Vergleich gewinnt ScheduledExecutorService.
Multithread Support, Unabhängig von der Systemzeit, Kann Exceptions direkt fangen und anderweitig bearbeiten..
Also ich programmiere ein Minecraft Plugin, wo jede Sekunde etwas passieren soll. Ich habe es mit Schedulern versucht, aber Eclipse zeigt mit keine Fehler an, jedoch gibt es einen Fehler. Obwohl ich nirgendwo return false; in onCommand stehen habe, wird es trotzdem ausgeführt und der ganze Code wird abgebrochen.
Es gibt eine Exception, weil du den Scheduler vermutlich falsch verwendest. Wir brauchen einen genauen Stacktrace und deinen Code, wenn wir dir weiterhelfen sollen.
Lass mal das vor dem = weg und schreib unten }, 0, 20L);
Also ich programmiere ein Minecraft Plugin, wo jede Sekunde etwas passieren soll. Ich habe es mit Schedulern versucht, aber Eclipse zeigt mit keine Fehler an, jedoch gibt es einen Fehler. Obwohl ich nirgendwo return false; in onCommand stehen habe, wird es trotzdem ausgeführt und der ganze Code wird abgebrochen.
Steht in einem meiner Kommentare
Also es wird in der onCommand Methode nur return false; ausgeführt und sonst nichts, obwohl ich da was ganz anderes stehen habe.
Offensichtlich wird ja nicht nur return false ausgeführt. Der Code, welchen du oben gepostet hast, ist keine vollständige Methode. Wenn du nirgends ein return statement hast, wird der Compiler dich ja nicht durchlassen, wie sieht es also damit aus?
Dann kann es ja erst mal gar nicht false returnen. Stattdessen wird vermutlich irgendwo ein Fehler geworfen. Pack doch mal alles in ein try/catch und printe den Stacktrace für eine Exception jeglicher Art.
Ich habe es ja mit Schedulern versucht, aber dann kommt eine Fehlermeldung, die niemand versteht und im Code keine Fehler erkennbar sind.
die niemand versteht
Nein, die du nicht verstehst und selbstverständlich geheimhälst, damit dir bloß niemand helfen könnte... -.-
Woher soll ich denn wissen, warum du das tust? o.O
Aber Tatsache ist: Du hälst die Meldung geheim.
Sehr hübsch... Jetzt fehlt nur noch der Code dazu.
P.S.: Hätt ich denn ahnen können, dass die Fehlermeldung (ist das wirklich alles? o.O) so dermaßen nichtssagend ist?
int Sekunden = 1;
while(true){
...
Thread.sleep(1000 * Sekunden)
}
Mir wird gesagt, dass ich
int Sekunden = 1;
while(true) {
try {
Thread.sleep(1000 * Sekunden);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
}
}
verwenden muss.
Kannst du mir bitte erklären? xD
Unter bestimmten Umständen kann sleep eine Exception werfen. Das ist beim MainThread schwer zu erreichen, aber bei künstlich erzeugten Threads kann das durchaus, aber selten, vorkommen. Standartmäßig wirft aber sleep eine Excetpion zurück
Weißt du, was
bedeutet?