Actuellement, je travaille sur l'application Java client/serveur de chat et j'ai une question, je vais essayer d'expliquer aussi clairement que possible.Comment appeler une méthode à partir d'un certain thread Java
Ma partie serveur continue de créer des threads (new ServerThread
) pour chaque utilisateur qui est en ligne:
while (isRunning) {
Socket socket = serverSocket.accept();
DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
outputStreams.put(socket, dout);
System.out.println (outputStreams.values());
new ServerThread(this, socket);
window.newConnectionInfo(socket);// informace
}
J'ai un getter dans un ServerThread classe, que je veux appeler de la certaine ServerThread instance basée sur socket. Mais la classe ServerThread n'est assignée à aucune variable, donc je ne sais pas exactement comment appeler les méthodes. Toute solution à ce sujet?
Si vous avez besoin de l'appeler sur tous les threads du serveur, je vous suggère de construire une liste d'entre eux et itérer sur cela en cas de besoin. Si vous avez besoin de l'appeler sur des threads particuliers dans certaines circonstances, plus d'informations sur votre scénario sont nécessaires. – Medo42
Votre question n'est pas claire. Votre 'ServerThread' a une méthode' run() ', dans laquelle le flux d'exécution se produit. Vous appelez une méthode à partir de là si vous voulez appeler "depuis" le fil. –
Pourquoi ne stockez-vous pas une référence à chaque ServerThread après l'avoir créé? Insérez-le dans une carte de hachage statique avec le socket comme clé. –