Folgendes: Ich habe einen Server, der jeden Client in einen Thread startet,
diese Threads gehören einer ThreadGroup (clientGroup) an. Wenn ich nun eine Nachricht
an alle Clients senden möchte, muss ich ja in jedem Thread eine Methode (send()) aufrufen.
Alle aktiven Client-Threads erhalte ich ja über die ThreadGroup. Soweit klappt alles super.
Laut dem Buch "Thinking in Java" kann man nun die Einträge in dem Thread Array in die
entsprechende Klasse casten, um dessen Methode aufzurufen.
Wenn ich das aber mache, erhalte ich eine java.lang.ClassCastException
bei folgendem Code:
Die ClassCastException tritt auf in den jeweils folgenden beiden Zeilen:
Also beim Casten in die Klasse "BrowserClientThread".
Habt Ihr eine Idee? Ich bin wieder gerade am Verzweifeln :-(
diese Threads gehören einer ThreadGroup (clientGroup) an. Wenn ich nun eine Nachricht
an alle Clients senden möchte, muss ich ja in jedem Thread eine Methode (send()) aufrufen.
Alle aktiven Client-Threads erhalte ich ja über die ThreadGroup. Soweit klappt alles super.
Laut dem Buch "Thinking in Java" kann man nun die Einträge in dem Thread Array in die
entsprechende Klasse casten, um dessen Methode aufzurufen.
Wenn ich das aber mache, erhalte ich eine java.lang.ClassCastException
bei folgendem Code:
Code:
public void sendToAll(String msg)
{
try
{
Thread[] clientArray = new Thread[clientGroup.activeCount()];
int clientCount = clientGroup.enumerate(clientArray);
for (int i=0; i<clientCount; i++)
{
System.out.println("Send to " + ((BrowserClientThread)clientArray[i]).getName() + ": " + msg);
((BrowserClientThread)clientArray[i]).send(msg);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
Die ClassCastException tritt auf in den jeweils folgenden beiden Zeilen:
Code:
System.out.println("Send to " + ((BrowserClientThread)clientArray[i]).getName() + ": " + msg);
((BrowserClientThread)clientArray[i]).send(msg);
Also beim Casten in die Klasse "BrowserClientThread".
Habt Ihr eine Idee? Ich bin wieder gerade am Verzweifeln :-(