Frage Scanner Eingabe abbrechen. Programm terminiert nicht

temp1

Grünschnabel
Hallo,

Code:
Code:
import java.util.Scanner;

public class MyProgram{
	public static void main(String[] args){
			
		//hier laufen 3 Threads die nach endlicher Zeit beendet werden.

		Scanner read = new Scanner(System.in); //programm bleibt hier haengen und wartet auf input, falls ein NOTFALL eintritt
//umThreads direkt zu beenden.
		n=read.next();

		if(n.equals("1")){
			System.out.println("STOP!");
			//Anweisung um Threads anzuhalten
		}	
	}
}

Problemstellung:
3 Threads werden in der main gestartet, diese laufen bis zum Ende.
Der Scanner, in vereinfachter Form, ist dazu da um einen Notfall bei den Threads abzufangen, dass diese sofort gestoppt werden.
Das funktioniert soweit.

Frage:
Wenn die 3 Threads alle "durchgelaufen" und beendet sind, bleibt das Programm weiterhin in der main im Scanner hängen und wartet auf eine Eingabe, die aber nur im Notfall erfolgen soll, das führt dazu das dass Programm nicht terminiert!
Ziel soll sein wenn die 3 Threads beendet wurden soll die Scannereingabe nicht mehr abgefragt und auch beendet werden.
Wie ist dies zu realisieren?
danke!
 
Zuletzt bearbeitet:
Danke!

Problem konnte so gelöst werden.

Code:
import java.util.Scanner;
 
public class MyProgram{
    public static void main(String[] args){
	
	        
        //hier laufen 3 Threads die nach endlicher Zeit beendet werden.
	//...    

 	
	InputThread in = new InputThread();
	in.start();

	thread1.join();
	thread2.join();
	thread3.join();
	System.exit(0);
       
    }
}


public class InputThread extends Thread{

 public void run(){
  Scanner read = new Scanner(System.in); 
  n=read.next();
 
        if(n.equals("1")){
            System.out.println("STOP!");
            
		//Anweisung um Threads anzuhalten
		//...

		System.exit(0);
        }   

 }
}
 
Zuletzt bearbeitet:
Zurück