Bonjour,
Voilà mon souci, c'est que j'ai besoin de faire un shutdown propre de tout ce qui a été ouvert. je m'explique :
J'ai une appli server (socketServer : dbServer), à chaque nouvelle connexion d'un client je crée un Thread (via le thread pool) qui va traiter les requête de ce client, etc.
A un moment donné un threadclient recoit un requêt 'shutdown' donc, je dois arreter toute les socketService déjà acceptée/ouvertes, arreter tout les threads clients déjà ouverts, et enfin arreter la socketServer (dbServer) en sortant du while...voir code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 //Code dbServer: try { //Create a new thread pool ExecutorService threadPool = Executors.newCachedThreadPool(); while(!listening) { //Wait for a client connection Socket socketService=null; socketService= serverSocket.accept(); // démarer le thread client qui va traiter les requêtes threadPool.execute(new ClientDBThread(socketService,threadPool)); } } catch (IOException eIO) { System.err.println("DbServer issue : "+eIO.getMessage()); System.exit(-1); }Je ne sais pas si c'est clair mais je suis vraiment bloqué
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 //thread client : ClientDBThread(Socket socket,ExecutorService threadPool) { //Allocate a new thread with name "ClientConnection" super("ClientConnection"); this.socketClient = socket; this.threadPool=threadPool; } @Override public void run() { while(listening) { System.out.println("start shutdown......"); //close all client socket ????socket.close() //but this only for the current socket not for all the others :( //Close all the client threads threadPool.shutdown(); //Return to dbServer and exit the wile?? ??? }(((
Merci d'avance.......
Partager