Re: Question sur le fonctionnement du ThreadPoolExecutor
Jean-Marc Desprez <[email protected]>
| Newsgroups | gmane.comp.java.french.general |
|---|---|
| Message-ID | <[email protected]> |
Salut, Merci pour la réponse. Sur la javadoc il est indiqué que cela utilisera une file illimitée :-( J'aimais vraiment bien le fonctionnement du ThreadPoolExecutor : - X tâches simultanées - mettre les autres en file - si vraiment il y a un fort besoin, augmenter le nombre de tâches simultanées - au delà de ce point, impossible de créer plus de tâches Le seul gros problème c'est que les tâches ne soient pas, dans tous les cas, dépilées dans l'ordre d'arrivé. Jean-Marc Le 13 décembre 2010 09:51, <[email protected]> a écrit : > > Salut, > > Pour celà tu peux utiliser : > ExecutorService executor = Executors.*newFixedThreadPool*(<nombre de > thread maxi>); > celà fonctionne exactement comme tu le souhaites. > > Serge > > > > > > Von: Jean-Marc Desprez <[email protected]> An: [email protected] > Datum: 10.12.2010 18:00 Betreff: Question sur le fonctionnement du > ThreadPoolExecutor > ------------------------------ > > > > Bonjour, > > Je crée un ThreadPoolExecutor de cette façon : > new ThreadPoolExecutor(5, 10, 120, TimeUnit.SECONDS, new > ArrayBlockingQueue<Runnable>(20, true)); > > J'exécute donc 5 Thread en parallèle mais lorsque la Queue arrive à > saturation je peux monter jusque 10. > > Imaginons que j'ai justement 5 Thread en cours (R1 -> R5) et 20 en attente > (Q1 -> Q20) > > Lorsqu'un nouveau Thread est nécessaire (T1), la javadoc indique ceci : > If a request cannot be queued, a new thread is created unless this would > exceed maximumPoolSize, in which case, the task will be rejected. > > Comme il n'y a pas la place de mettre T1 dans la Queue et que je n'ai pas > atteint la limite haute, je m'attendais à ce Q1 soit exécuté et que T1 soit > mis en fin de Queue. > Cependant, c'est T1 qui est exécuté tout de suite :-( > > Y a t'il un moyen pour obtenir le fonctionnement désiré ? > > Merci > > Jean-Marc > >