Bonjour,
Un pote me dit que lancer un thread dans un constructeur est un anti-pattern. Mais je ne comprends pas vraiment pourquoi.
Avez-vous des idées?
Merci de votre aide.
Bonjour,
Un pote me dit que lancer un thread dans un constructeur est un anti-pattern. Mais je ne comprends pas vraiment pourquoi.
Avez-vous des idées?
Merci de votre aide.
je ne pense pas qu'il y aura un problème juste tu doit respecter le syntaxe par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 TonThread t=new TonThread(); t.start();//pour le lancer
Bonjour,
Si c'est le concept qui t'intéresse pour ma part le Thread c'est magique,surtout quand tu t'attaques au graphique swing de java, ils permettent de gérer plusieurs tâche en parallèle ou faire tourner des calculs en fond de tâche.
Après pour moi un pattern c'est une solution réutilisisable d'un problème initial donc je ne vois pas en quoi un thread utilisé dans un constructeur serait un "anti-pattern".
L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.
Modérateur BI
je pense qu'il y a là une référence à une autre "règle": ne pas donner de référence sur un objet incomplet au cours de la construction.
tu construis un objet qui a besoin pour fonctionner de données essentielles: avant que ces données ne soient initialisées tu passes une référence this (explicitement ou implicitement) qui peut être exploitée dans un autre Thread : là tu es mal car des bugs très subtils peuvent se produire.
donc je pense que "l'anti-pattern" (qui existe effectivement) a été mal expliqué. En résumé on peut lancer un Thread dans un constructeur à la condition que ce Thread ne risque pas de "taper" dans des données encore non initialisées ou dans un état incoherent.
J'ai vu un jour un bug rigolo dans du code graphique: dans un constructeur l'objet courant était passé à un arbre d'objets graphique.... lors d'un changement de version de java ça a planté: le Thread qui gérait l'affichage a essayé de manipuler l'objet avant qu'il soit complètement construit!
C'est pas faux. Je n'avais pas vu sous cet angle, bien vu
. Avec tout sa LGnord tu pourras épater ton ami :p.
L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.
Modérateur BI
Anti-pattern j'ai des doutes.
Mais disons que je trouve pas ça super propre : de même qu'il y a besoin d'une méthode pour arrêter le thread qu'on a créé, c'est pas plus mal d'avoir une méthode pour le démarrer, au lieu de faire ça dans le constructeur. Ça fait de la symétrie, ça met le cerveau à l'aise, il voit bien qu'est-ce qui fait démarrer le thread.
Partager