2016-08-08 17 views
-1

Ich mache ein Skype-ähnliches Programm. Sagen wir, ich habe 2 Anrufe, das würde bedeuten, dass ich 4 Threads habe. Ich hätte 2 Threads, die die Benutzer akzeptieren, und dann 2 weitere Threads, die die Nachrichten des Benutzers usw. behandeln ... Ich habe es geschafft, wenn es weniger als 2 Benutzer in dem Aufruf gibt, aber wie beende ich einen der Accept-Threads wenn 2 rennen und wie sage ich einem der beiden zu stoppen. Gibt es eine Möglichkeit, dass ich die Indexnummer des Threads verwenden kann, um es zu stoppen?Wie stoppe ich einen Thread von einem anderen Thread

+0

zeigen, was Sie bisher versucht –

+2

senden Sie den empfangenen Thread ein Signal zu Ende. Alle Ihre Threads warten auf eine Eingabe. Senden Sie ihnen eine Nachricht, um ihnen zu signalisieren, dass sie ihre Jobs beenden müssen. Wie die anderen sagen, poste deinen Code, den du ins Detail bringen musst –

+0

Du könntest die zwei Threads die Referenz voneinander speichern lassen und etwas wie [this] versuchen (http://stackoverflow.com/questions/3194545/how- to-stop-a-java-thread-anmutig) –

Antwort

1

Der korrekte Weg besteht darin, Ihre Threads in Variablen (oder einem Array) zu speichern und Interrupts zu verwenden, um von einem Thread zum anderen zu signalisieren, dass er anhalten soll. Der Thread, dem Sie signalisieren, muss das Ereignis dann verarbeiten.