Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe jetzt überall gelesen, dass man Threads am besten per interrupt beendet und dann statt einer while(true) schleife eine while(!isInterruptet()) nimmt.
jetzt haben die aber alle Threads mit extends Thread klassen und nicht wie ich implements Runnable....
wenn ich jetzt eine neues Thread objekt mache, über das ich auf die Funktion zugreifen kann, hilft mir das ja nicht direkt weiter....
wie mach ich das am besten? dass ich aus der einen Klasse ein interrupt sende und dass das dann meinen Thread beendet...
und kommt das an, wenn ich auf ein readLine warte? weil dann ist die schleife ja blockiert....
ich hab auch schon mal in der API geguckt, da steht auch was, aber wenn ich ehrlich bin sind die Texte da so knapp und minimalistisch, da versteh ich meist nur die hälfte...
ich hoffe ihr könnt mir helfen ohne dass ich euch zu viel mühe mache aber bisher hab ich noch nie Threads beendet^^
Sorry, ich verstehe nur Bahnhof. Du hast keine Threads, sondern Runnable-Implementierungen? Auf welche Funktionen willst du nun wieder zugreifen? Du willst ein "interrupt senden", dann rufe doch einfach die interrupt() Methode auf und schaue, was passiert...
Oder beschreib den Problem mit weniger Worten und mehr Details (Worte verwirren mich öfter mal, vor allem, wenn sie so komisch aneinandergereiht werden).
ich habe jetzt überall gelesen, dass man Threads am besten per interrupt beendet und dann statt einer while(true) schleife eine while(!isInterruptet()) nimmt.
jetzt haben die aber alle Threads mit extends Thread klassen und nicht wie ich implements Runnable....
wenn ich jetzt eine neues Thread objekt mache, über das ich auf die Funktion zugreifen kann, hilft mir das ja nicht direkt weiter....
Also: A kennt B, B startet Thread C, A braucht Zugriff auf Thread C.
Dann muss B sich das Thread-Objekt merken und eine Zugriffsmethode haben.
Code:
public class B {
private Thread t;
public B() {
t = new MyThread(); //--- MyThread extends Thread
/* oder auch
t = new Thread( new MyRunnable()); //--- MyRunnable implements Runnable
*/
t.start();
}
public Thread getThread() {
return T;
}
}
public class A {
private B b;
/* ... */
b = new B();
/*... */
b.getThread().interrupt();
}
Allerdings ist der Thread wahrscheinlich eher ein Implementierungsdetail der Klasse B, das man nicht unbedingt über das API führen sollte. Daher besser so:
Code:
public class B {
private Thread t;
public B() {
t = new MyThread(); //--- MyThread extends Thread
/* oder auch
t = new Thread( new MyRunnable()); //--- MyRunnable implements Runnable
*/
t.start();
}
public void interrupt() {
T.interrupt();
}
}
public class A {
private B b;
/* ... */
b = new B();
/*... */
b.interrupt();
}