Hallo zusammen,
ich habe einen kleinen SocketServer programmiert, der die Clients in Threads verwaltet.
Nun würde ich gerne innerhalb dieses Threads einen Timer nutzen, damit ich sagen wir alle 30 Sekunden bestimmte Datensätze überprüfen kann und ggf. bestimmenten Clienten dann eine Nachricht zukommen lassen kann.
So wie ich das sehe, hat die Timer-Klasse eine eigene run()-Methode. Wie also kann ich das dann bewerkstelligen ???
Mal ein bischen Code:
So, wie kann ich nun innerhalb der run()-Methode des Threads noch einen Timer verwenden ???
Ich habe auch versucht, einen Timer einfach in eine eigene Klasse zu schreiben aber ich weiß dann nicht, wie ich der Klasse ThreadHandler mitteilen soll, das sie ggf. reagieren muss. :bahnhof:
Erst zu warten, bis eine Anfrage eines Clients reinkommt und dann eine entsprechende Aktion auszuführen geht nicht, ich brauche diese Aktionen ziemlich zeitnah.
Wäre super, wenn mir da jemand etwas auf die Sprünge helfen könnte. Danke!
ich habe einen kleinen SocketServer programmiert, der die Clients in Threads verwaltet.
Nun würde ich gerne innerhalb dieses Threads einen Timer nutzen, damit ich sagen wir alle 30 Sekunden bestimmte Datensätze überprüfen kann und ggf. bestimmenten Clienten dann eine Nachricht zukommen lassen kann.
So wie ich das sehe, hat die Timer-Klasse eine eigene run()-Methode. Wie also kann ich das dann bewerkstelligen ???
Mal ein bischen Code:
Java:
public class ThreadHandler extends Thread {
static Vector<ThreadHandler> handlers = new Vector<ThreadHandler>(Server.MAX_CLIENTS);
private BufferedReader in;
private PrintWriter out;
private Socket socket;
public ThreadHandler(Socket socket) throws IOException {
this.socket = socket;
in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(
new OutputStreamWriter(socket.getOutputStream()));
}
@Override
public void run() {
String password = "";
String username = "";
String line;
String[] userdata = new String[22];
String response = "";
synchronized (handlers) {
handlers.addElement(this);
// add() not found in Vector class
}
try {
while ((line = in.readLine()) != null) {
if (line.equalsIgnoreCase("/quit")) {
break;
}
..... //Hier werden Inputs-und Output Streams gehandelt... und hier soll auch auf TimerEvents reagiert werden können
}
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
in.close();
out.close();
socket.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
So, wie kann ich nun innerhalb der run()-Methode des Threads noch einen Timer verwenden ???
Ich habe auch versucht, einen Timer einfach in eine eigene Klasse zu schreiben aber ich weiß dann nicht, wie ich der Klasse ThreadHandler mitteilen soll, das sie ggf. reagieren muss. :bahnhof:
Erst zu warten, bis eine Anfrage eines Clients reinkommt und dann eine entsprechende Aktion auszuführen geht nicht, ich brauche diese Aktionen ziemlich zeitnah.
Wäre super, wenn mir da jemand etwas auf die Sprünge helfen könnte. Danke!