[Java] Warum wird der Thread nicht angehalten(Thread.sleep())?

...komplette Frage anzeigen

4 Antworten

Ohne das ganze überhaupt gelesen zu haben, kann ich sagen, dass Thread.sleep() hier der komplett falsche Ansatz ist.

Es gibt zwei Möglichkeiten:

1. Mit Java Timern, dort kannst du einen TimeTask (wie Runnable) erzeugen der mit einem bestimmten delay periodisch ausgeführt wird. Das ist die korrekte Methode für Java etwas alle 10 Sekunden auszuführen.

2. Mit dem Bukkit Scheduler, das ist wie der Name schon sagt ist das eine Art Timer für Bukkit. Diese Methode wäre in dem Fall auch die beste.

Anleitungen kannst du im Internet genug finden.

Vielen Dank für deine Antwort. Dann muss ich wohl das Buch wechseln oder nochmal genauer nachlesen. Wahrscheinlich habe ich mich nur verlesen...

0
@Felix193

Welches Buch benutzt du denn?

Eigentlich verwendet man Thread.sleep() möglichst gar nicht, vor allem auch weil die genaue Zeit nicht gewährleistet werden kann und weil es nur den Betrag zur Ausführzeit hinzufügt. D. h. wenn dein Code 5 Sekunden braucht ist die Periodenzeit 15 Sekunden und nicht 10, bei einem Timer ist die Ausführzeit irrelevant.

0
@androhecker

"Programmieren lernen mit Java" naja. Kannst du mir ein gutes empfehlen? Ich habe jetzt mal das mit dem Bukkit Scheduler recherchiert und es funktioniert so wie ich es will.

Nur klappt's nicht ganz mit den Variablen. Ich habe das ganze, wie im Buch erklärt, mit diesen get- und setmethoden umgesetzt. Ich habe mir ausgeben lassen, wo die Variablen nicht über geben werden. Ich bekomme schon die Variable nicht mehr aus dem Try-Block. Was habe ich dort falsch gemacht? Kennst du eigentlich in die Richtung Variablen und besonders die Nutzung in mehreren Klassen auch noch ein gutes Tutorial? Vielen Dank für deine Tipps!

0

Also eigentlich sind Rheinwerk Bücher gut, wobei es auch sein kann, dass die eine Bewertung damit recht hatte, dass die Qualität später nachlässt. Wenn du bereits vieles in Java kannst (davon gehe ich aus, wenn du mit Threads arbeitest) dann kannst du was mit Java ist auch eine Insel anfangen, das Buch ist wirklich sehr gut. (Aber eben nicht für Anfänger) Wäre gut wenn du noch mal den Code schicken würdest, ich kann dir auch auf Skype helfen wenn du willst, Name ist dav200111

0

Du hast zwei Try-Catch-Blöcke, die jeweils unterschiedliche Ereignisse Abfangen.

Der innere Block, den du mit IOException abfängst löst bereits bevor es zum Thread.sleep() kommt einen Fehler aus, wodurch dein Thread.sleep() nie ausgeführt wird.

In der Schleife tritt eine Ausnahme auf, die Du wegen

catch(IOException e){

 }

nicht siehst.

Mach es doch mit einer BukkitScheduler das ist sehr viel einfacher

Was möchtest Du wissen?