Chop: Join von Threads bei I/O-Operation

Beitrag lesen

Hallo,

ich hab hier einen Thread der die ganze Zeit auf Nachrichten vom Server wartet.... Wenn sich der Client jetzt nun abmeldet, möchte den Thread halt joinen um das alles zu beenden. Der Client schickt also dem Server eine Nachricht, dass er sich abmelden möchte und der Server schickt dem Client die Nachricht, dass das alles OK ist. Der Client empfängt die Nachricht und verarbeitet sie. Jetzt läuft allerdings der Thread wieder weiter und wartet auf eine neue Nachricht vom Server, da er das ganzer schafft bevor, der Client die nachricht verarbeitet und "isLoggedIn" auf false setzt. Dadurch blokiert er und joined nicht.

Wie löse ich das am besten? Ich möchte sehr ungern in dem ReceiveThread prüfen ob eine Antwort auf die Abmeldenachricht vom Server kommt.

Hier ist der Code des Threads:

public void run()
   {
      try{
         do
         {
            Message receivedMessage = receiveMessage();
            System.out.println("MESSAGE RECEIVED "+receivedMessage.getClass().getSimpleName());
            client.processMessage(receivedMessage);

}while(client.isLoggedIn());

}catch(IOException e){
         e.printStackTrace();
         }
      catch(ClassNotFoundException e){
         e.printStackTrace();
         }
   }

Vielen dank schonmal,

Gruß
Chop