Un peu confondu pour commencer en en utilisant ExecutorService, j'ai une application clients/serveur, où chaque client doit exécuter quelques méthodes par ordre, ainsi que le serveur tout en se partageant quelques données, j'ai eu des problèmes en implémentant de simples threads donc j'ai pensé à refaire avec ExecutorService, mais j'ai senti un conflit en suivant les tutoriels :
  • Est ce que cette ExecutorService prend en charge mes threads clients ou leurs tâches, est ce que ce code est bon

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
 
public class ClientThread implements Runnable{
        private int id;                   private Socket socket;
 
        public ClientThread(int id, Socket s){
             this.id = id;
             this.socket = s;
        }
        public void run(){
               méthodeTache1();
               méthodeTache2();
               ...
        }
        méthodeTache1(){}
        méthodeTache2(){}
}
 
public class Server{
       public void runServer(){
              Runnable serverTask = () -> {                
                    ServerSocket srv = new ServerSocket(Integer.valueOf(txtPort.getText()));
                    ExecutorService execClients = Executors.newFixedThreadPool(nbrClients);
                    for(int i = 0 ; i < nbrClients ; i++){
                        execClients.submit(new ClientThread(i, srv.accepte()));
                    }
              }
             Thread serverThread = new Thread(serverTask);
            serverThread.start();
       }
}
  • Est ce que l'ExecutorService s'en charge de démarrer les thread clients sans que je mette start() ?

svp besoin d'un cours pour débutants dans ce domaine

merci