Thread.sleep und InterruptedException?

V10_FTW

Mitglied
Warum geht der Computer in diesem Code wegen der sleep Unterbrechung in den catch block...
Java:
public class MyThread extends Thread implements Runnable {

    private Frame frame;

    public MyThread(Frame frame) {
        this.frame = frame;
    }
    
    @Override
    public void run() {
        int i =0;
        while (i!=-1) {
        try {
          sleep(1000);
        }
        catch(InterruptedException e) {
        }
        GregorianCalendar cal = new GregorianCalendar();
        SimpleDateFormat sdf = new SimpleDateFormat("dd.MMMM.yyyy HH:mm:ss");
        frame.getTime().setText(sdf.format(cal.getTime()));
      }
    }
}
...und in diesem Programm nicht???
Java:
public class CalcThread extends Thread implements Runnable  {

    private Rechenquiz frame;
    private ArrayList<Aufgabe> liste;
    private Double result;
    private int timeinmillis;

    public CalcThread(Rechenquiz frame, ArrayList<Aufgabe> liste, int time) {
        this.frame = frame;
        this.liste = liste;
        this.timeinmillis = time * 1000;
        this.frame.getjTextField1().setText("");
    }

    @Override
    public void run(){
        int listSize = this.liste.size();
        for (int i = 0; i < listSize; i++) {

            Double z1 = liste.get(i).getZ1();
            Double z2 = liste.get(i).getZ2();
            String op = liste.get(i).getOp();
            frame.getjLabelZ1().setText(z1.toString());
            frame.getjLabelZ2().setText(z2.toString());
            frame.getjLabelOP().setText(op);
            if (op.equals("+")) {
                result = z1 + z2;
            }
            if (op.equals("-")) {
                result = z1 - z2;
            }
            if (op.equals("*")) {
                result = z1 * z2;
            }
            if (op.equals("/")) {
                result = z1 / z2;
            }
            System.out.println(i);
            try {
                sleep(timeinmillis);
            } catch (InterruptedException ex) {
                System.out.println("Exception");
            }

        }
    }
Ps: Das erste Programm zeigt nur die Aktuelle Uhrzeit an und das zweite sollte ein Ergebnis einer Rechnung ausrechnen.

Ich komm hier nicht mehr weiter ;(
 
Zuletzt bearbeitet:
Also normalerweise lässt man den catch-Block nicht leer, sondern lässt ihn sich ausgeben (Konsole oder Logger) mit
Java:
try {
  ...
} catch(Exception e) {
  e.printStackTrace();
}

Dann sollte man hier eine Problemstellung schreiben. Denn "Eine Exception wird geworfen und ich weiß nicht weiter" ist keine Fehlerbeschreibung. Des Weitern sollte man den StackTrace posten (wie oben beschrieben).

Weiters leitet man nicht von Thread ab und man verwendet schon gar nicht sleep als Instanzmethode, wenn sie statisch ist.
 
Zuletzt bearbeitet:

Zurück
Oben