multithreading avec ExecutorService
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:
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