Question sur le fonctionnement du ThreadPoolExecutor

Jean-Marc Desprez <[email protected]>
Newsgroups gmane.comp.java.french.general
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.