Thread mit Button anhalten und wieder neu starten lassen

Anfaengerin

Aktives Mitglied
Hallo, ich habe in JavaFx zwei Buttons. Mit dem einen möchte ich, dass eine Digitaluhr anfängt zu laufen (und auch wieder beginnt, nachdem ich sie gestoppt habe) und mit dem anderen will ich sie pausieren / stoppen. Mit dem ersten Button ist soweit alles in Ordnung, nur der zweite, der stoppen soll, macht noch nicht so richtig, was er soll. Die Uhr stoppt, aber es kommt eine Fehlermeldung und neu starten kann ich sie nicht. Soll ich ihn da noch eine Exception werfen lassen?

Java:
package org.example.javafxprojekt3;


import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;

import java.net.URL;
import java.time.LocalDateTime;
import java.util.*;

public class HelloController implements Initializable {
    Runnable runnable = new Runnable() {

        public void run() {
            while (true) {
                Platform.runLater(() -> welcomeText.setText((LocalDateTime.now()).toString()));


                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }

        }
    };


    @FXML
    private Label welcomeText;
    Thread thread = new Thread(runnable);

    @FXML
    public void start() {

        thread.start();

       }

    @FXML
    public void Stopbutton() {

    thread.interrupt();


    }



      @Override
    public void initialize(URL url, ResourceBundle rb) {

      

    }
}
 
Ein Thread der einmal gestoppt wurde und zu ende ist, den kann man nicht neu starten. Es kann nur ein anderer Thread gestartet werden. Man kann aber einen Thread warten lassen.
Methoden wait() und notify():
  • wait() - Veranlasst den aktuellen Thread zu warten, bis ein anderer Thread die notify()-Methode oder die notifyAll()-Methode für dieses Objekt aufruft.
  • notify() - Weckt einen einzelnen Thread auf, der auf den Monitor dieses Objekts wartet.
wait()
notify()
 
Zuletzt bearbeitet:

Zurück
Oben