bonjour,
je viens de decouvrir l'interface Callable, et j'aimerais l'utiliser plutot que Runnable.
J'ai deja trouvé des explications sur le fonctionnement et tout ca, mais mon code n'est pas executé en parallele, mais en sequentiel.. pourtant je ne vois pas ce que j'aurais mal fait.
pouvez vous m'aider ? merci d'avance
voici mon code :
le thread :
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
32
33
34
35
36 public class ThreadPing implements Callable<Boolean> { private InetAddress ipBus; public Boolean call() throws Exception { boolean retIP = lancementPing(); return retIP; } private boolean lancementPing() { try { boolean accessible = ipBus.isReachable(1000); if (accessible){ return true; }else{ return false; } } catch (IOException e) { e.printStackTrace(); } return false; } public ThreadPing(int numTBA){ try { this.ipBus = InetAddress.getByName(Config.getProperty("global.adresseBus") + numTBA); } catch (UnknownHostException e) { e.printStackTrace(); } } }
appel du thread :
j'utilise bien les objets Executor et Future donc je ne vois vraiment pas..
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 ExecutorService executor = Executors.newCachedThreadPool(); for (int i=0 ; i<nbBus ; i++){ numTBA = listeBus.get(i).getTba(); numBus = listeBus.get(i).getNumero(); Future<Boolean> f1 = executor.submit(new ThreadPing(numTBA)); try { if (f1.get() == true){ System.out.println("adresse 10.22.6." + numTBA + " accessible"); } } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); }
Partager