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 :

Modification d'objet depuis Thread


Sujet :

avec Java

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut Modification d'objet depuis Thread
    Bonjour à tous,

    Je développe une application android qui se compose de plusieurs Thread.
    L'un de ces Thread est appelé comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyThread thread = new MyThread(handler,monObjet);
    monObjet est un objet déclaré dans mon activité principale.
    Selon les données reçue par le Thread (via socket) il va modifier une des propriété de monObjet.
    La modification de monObjet est donc répercuté dans l'activité principale.

    Sachant que monObjet peut être utilisé (mais pas modifié) dans d'autre thread dois je mettre en place une sécurité particulière dans mon thread lors de la modification de mon objet ?

    Est ce correcte de se reposer sur le passage par référence de l'objet pour les modification ou devrais je faire quelque chose de plus explicite comme par exemple un setter dans l'activité qui recevrait l'objet modifié par le thread ?

    Merci
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Sur la question de la synchronisation, cela dépend fortement des risques liés à la modification de ton objet.

    Imaginons par exemple que monObjet contienne une liste non synchronisée (genre, ArrayList). Dans un thread "utilisateur", tu entames une itération, mais ton thread modificateur rajoute un élément. Pam, fail-fast, ton thread utilisateur t'envoie une ConcurrentModificationException.

    Donc à moins d'être certain que tu n'auras pas ce genre de configuration, il va te falloir synchroniser !

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Merci de ta réponse.

    Mon thread modificateur ne fait que modifier un boolean donc a priori pas de problème de ce côté.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    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
    Dans ce cas, pas besoin de "sécurité" particulière. Mais les modifications de l'objet ne seront pas forcément visibles d'un thread à l'autre s'il n'y a pas une forme de synchronisation.

    Si la seule chose qui concerne les deux threads est ce fameux booléen, alors il suffit de le déclarer volatile : dans ce cas le compilateur ne gardera jamais sa valeur en cache et retournera le chercher dans l'état de la mémoire, à chaque lecture. Ce qui rend les changements visibles pour tous les threads.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [POO] Acces aux attributs d'un objet depuis une methode evenement :s
    Par NikoGJ dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/07/2006, 19h01
  2. [Thread] Modifier objet static depuis thread
    Par orelero dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 19/04/2006, 17h09
  3. Réponses: 4
    Dernier message: 08/03/2006, 19h07
  4. [SWING][JList] Réference à un objet depuis une ligne
    Par Invité dans le forum Composants
    Réponses: 12
    Dernier message: 21/02/2006, 10h08
  5. [HashMap] Modification d'objet d'une Hashtable
    Par viena dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 29/07/2004, 09h04

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