IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Créer un thread dans un constructeur.


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 190
    Par défaut Créer un thread dans un constructeur.
    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.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Par défaut
    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

  3. #3
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    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

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    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!

  5. #5
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    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

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    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.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer un objet dans le constructeur
    Par momedalhouma dans le forum Général Java
    Réponses: 2
    Dernier message: 31/03/2013, 23h49
  2. Réponses: 2
    Dernier message: 07/08/2010, 22h34
  3. Réponses: 7
    Dernier message: 02/12/2009, 17h49
  4. Threads windows this est null dans le constructeur
    Par ghalaax dans le forum Visual C++
    Réponses: 1
    Dernier message: 12/12/2006, 16h57
  5. Créer une série dans un chart
    Par cyrose dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/11/2002, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo