Code wo der Hauptthread ist
Hier wo die Nebenthreads sind
Nun das Problem Der ircWatcher-Thread läuft weiter obwohl er eigentlich nach 2Sekunden abbrechen soll.
Kennt da jemand vielleicht die Lösung dazu?
Code:
public class test
{
public static void main(String[] args)
{
ircWatcher ircWatcher = new ircWatcher();
ircWatcher.start();
try
{
Thread.sleep(2000);
}
catch (InterruptedException e)
{
System.out.println(e.toString());
}
ircWatcher.interrupt();
}
}
Hier wo die Nebenthreads sind
Code:
import java.net.*;
import java.io.*;
public class ircWatcher extends Thread
{
public void run()
{
int count = 0;
ThreadGroup threadClients = new ThreadGroup("Clients");
try
{
System.out.println("Warte auf Verbindungen auf Port 6667...");
ServerSocket echod = new ServerSocket(6667);
while(!currentThread().isInterrupted())
{
Socket socket = echod.accept();
Thread t1 = new EchoClientThread(++count, socket, threadClients, "Test"+count);
t1.setPriority(5);
t1.start();
threadClients.list();
}
threadClients.interrupt();
echod.close();
}
catch(IOException e)
{
System.err.println(e.toString());
System.exit(1);
}
catch(ThreadDeath td)
{
System.out.println("Es ging nur so!");
threadClients.interrupt();
}
}
}
class EchoClientThread extends Thread
{
private int name;
private Socket socket;
public EchoClientThread(int cname, Socket socket, ThreadGroup group, String name)
{
super(group, name);
this.name = cname;
this.socket = socket;
}
public void run()
{
String msg = "EchoServer: Verbindung " + name;
System.out.println(msg + "hergestellt");
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println(msg);
String c;
while ((c = in.readLine()) != null && !c.startsWith("exit"))
{
if(isInterrupted())
{
break;
}
out.println(c);
System.out.println(c);
}
System.out.println("Verbindung " + name + " wird beendet");
out.close();
in.close();
socket.close();
}
catch(IOException e)
{
System.err.println(e.toString());
}
}
}
Nun das Problem Der ircWatcher-Thread läuft weiter obwohl er eigentlich nach 2Sekunden abbrechen soll.
Kennt da jemand vielleicht die Lösung dazu?