L’idée de faire des threads sur une application web vient du fait que les processeurs des serveurs sous souvent sous-utilisés (je dirais en moyenne 20%), et donc on pourrait gagner en rapidité des applications en mettant davantage de threads, plutôt qu’en augmentant les capacités des processeurs. Voilà donc rapidement comment faire des threads en Java.
D’abord on va isoler le code à threader. Pour cela, on créera une classe java, comme celle-ci par exemple : [sourcecode language=“java”] public class LongCompute extends Thread{ private Long monLong; LongCompute (Long monLong){ this.monLong = monLong; } public void run() { monLong++; } } [/sourcecode]
L’idée est ici réellement d’avoir un code seulement dépendant du contexte qui lui aura été passé. Notez que cette classe doit étendre de la classe Thread.
Ensuite, on va appeler ce code depuis une méthode, présente dans une autre classe :
[sourcecode language=“java”] for (Long monLong : collectionLong) { Thread th = new LongCompute(monLong); threadList.add(th); th.start(); }
for(Thread th : threadList) try {th.join();} catch(Exception e) {} }
[/sourcecode] Sachant que la technique ci-dessus les démarre tous à la suite, et les joints tous à la fin. Compliqué et risqué si le traitement de chaque thread est coûteux en temps et en mémoire !
D’où une autre méthode pour limiter le nombre de threads démarrés en parallèle. [sourcecode language=“java”] for (Long monLong : collectionLong) { Thread th = new LongCompute(monLong); threadList.add(th); } Iterator
Avec une méthode asyncMethod qui ressemblera à ceci :
[sourcecode language=“java”] private void asyncMethod(Iterator
Un petit schéma pour mieux comprendre les threads : 
Et voilà ! Pour les crédits : remerciements à Anthony L. pour le code de la asyncMethod. Le reste a été trouvé là.
Les nouveaux commentaires sont désactivés sur cette version statique du blog.