D
Die Fragende
Gast
Hallo, mal eine ganz blöde Frage:
Ich versuche mich gerade an Threadprogrammierung unter Java (Anhand von "Java ist auch eine Insel" und diesem Forum), und jetzt bin ich auf eine Frage gestoßen, wo ich einfach keine Lösung finde...
Ich habe ein MainProgram in welchem ich zwei Threads instanziere und dann auch starte. Die eine soll nur auf einen Tastendruck warten und dann das Programm sauber beenden lassen, die andere macht die Arbeit ;-)
Ich dachte mir, dass wenn die Taste gedrückt wurde, diese Thread beendet wird, dies im MainProgram gemerkt und dann auch die andere Thread beendet wird. Leider klappt schon das erste davon nicht. Wie bringe ich die Thread dazu, sich selbst zu beenden? this,interrupt() wohl nicht...
Für Hilfe wäre ich echt dankbar!"
Ich versuche mich gerade an Threadprogrammierung unter Java (Anhand von "Java ist auch eine Insel" und diesem Forum), und jetzt bin ich auf eine Frage gestoßen, wo ich einfach keine Lösung finde...
Ich habe ein MainProgram in welchem ich zwei Threads instanziere und dann auch starte. Die eine soll nur auf einen Tastendruck warten und dann das Programm sauber beenden lassen, die andere macht die Arbeit ;-)
Code:
public class MainProgram{
public final String TestVariable = "Hallo";
public static void main(String[] args) {
SystemExecThread set = new SystemExecThread();
KeyListenerThread klt = new KeyListenerThread();
klt.start();
while (true){
set.start();
if (klt.isInterrupted()){
System.out.println("ENDE klt");
set.interrupt();
if(set.isInterrupted()){
System.out.println("ENDE set");
System.exit(0);
}
}
}
}
}
Code:
public class KeyListenerThread extends Thread {
public KeyListenerThread() {
}
public void run() {
System.out.println("*** Press return-key to terminate program. ***");
while (true) {
try {
if ((char) System.in.read() == KeyEvent.VK_ENTER) {
System.out.println("*** Return-key pressed. Program will be terminated.***");
this.interrupt();
System.out.println(this.getState());
}
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
}
}
}
}
Ich dachte mir, dass wenn die Taste gedrückt wurde, diese Thread beendet wird, dies im MainProgram gemerkt und dann auch die andere Thread beendet wird. Leider klappt schon das erste davon nicht. Wie bringe ich die Thread dazu, sich selbst zu beenden? this,interrupt() wohl nicht...
Code:
public class SystemExecThread extends Thread{
public SystemExecThread() {
}
public void run(){
while (true){
String[] entries = new File( "D:\\Installation" ).list();
// for (int i = 0; i < entries.length; i++) {
System.out.println("Files: " + entries.length);
// }
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
}
}
}
}
Für Hilfe wäre ich echt dankbar!"