Ich versuche mein erstes multi-threaded Programm in Java zu schreiben. Ich kann nicht verstehen, warum wir diese Ausnahmebehandlung um die for-Schleifen benötigen. Wenn ich ohne die try/catch-Klauseln kompiliere gibt es eine InterruptedException. (Hier ist die Botschaft:Warum muss ich jeden Thread.sleep() - Aufruf in eine try/catch-Anweisung umbrechen?
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Unhandled exception type InterruptedException
)
Aber wenn sie mit der try/catch laufen, die SYSOUT in den Fangblöcke werden nie angezeigt - keine solche Ausnahme impliziert ohnehin war gefangen!
public class SecondThread implements Runnable{
Thread t;
SecondThread(){
t = new Thread(this, "Thread 2");
t.start();
}
public void run(){
try{
for(int i=5 ; i>0 ; i--){
System.out.println("thread 2: " + i);
Thread.sleep(1000);
}
}
catch(InterruptedException e){
System.out.println("thread 2 interrupted");
}
}
}
public class MainThread{
public static void main(String[] args){
new SecondThread();
try{
for(int i=5 ; i>0 ; i--){
System.out.println("main thread: " + i);
Thread.sleep(2000);
}
}
catch(InterruptedException e){
System.out.println("main thread interrupted");
}
}
}
'Wenn ich kompiliere ohne die try/catch-Klauseln gibt es eine InterruptedException': nein es nicht, es gibt einen Fehler, dass Sie diese checked Ausnahme nicht abfangen - das ist sehr unterschiedlich zu dem Compiler Ihnen eine Ausnahme zu geben. – OrangeDog
Wenn ich kompilieren, sagt es so: Exception in thread "main" java.lang.Error: Ungelöste Kompilation Problem: \t Unbehandelte Ausnahme Typ InterruptedException \t bei MainThread.main (MainThread.java:10) –
@SergioGliesh: bearbeite deine Frage, schreibe sie nicht in einen Kommentar. –