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

Langage Java Discussion :

"volatile" préconisé ou pas ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut "volatile" préconisé ou pas ?
    tout le monde,

    Je viens chercher votre aide au sujet du mot-clé volatile.

    Je fais des accès concurrents à une BD MySQL via un objet implémentant le patron Singleton me permettant de me connecter à cette base.

    Ayant des problèmes de concurrences, j'utilise le mot-clé "volatile" qui me permet d'éviter des erreurs (lorsque, par exemple, je fais une grosse requête dans un client et que j'ouvre un autre client pour exécuter une autre requête).

    J'aurais simplement voulu savoir s'il y avait des contre-indications sur l'utilisation de ce mot-clé, s'il était déprécié, si il ne fallait surtout pas l'utiliser avec des BD, ...

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    faudrait voir ton code, mais d'habitude ce n'est pas le mot clé volatile qu'on utilise pour çà. Volatile indique à la jvm et au compilateur de ne pas cacher le contenu de la variable dans les registres de la jvm. Pour les problème de multithreading on utilise la synchronisation.

  3. #3
    ndp
    ndp est déconnecté
    Membre expérimenté Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    faudrait voir ton code, mais d'habitude ce n'est pas le mot clé volatile qu'on utilise pour çà. Volatile indique à la jvm et au compilateur de ne pas cacher le contenu de la variable dans les registres de la jvm. Pour les problème de multithreading on utilise la synchronisation.
    Dans certains cas l'utilisation du mot cle volatile est plus simple a mettre en place et plus lege que d'utiliser synchronized, donc dans ces cas la, il ne faut pas s'en priver.
    Il faut l'avoir dans sa petite boite a outil, en sachant les differences avec synchronized (notamment par rapport a la section critique).

    Exp d'utilisation: Positionnement/test d'un flag. Si un seul thread peut ecrire le flag, tous les autres etant en lecture dessus, alors la declaration en volatile de la variable est suffisante.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    comme si bien mentionné dans la faq de ce site, le mot clé volatile n'est pas nécessairement respecté par la jvm. De plus, à voir la question initiale (ok sans le code) j'ai l'impression que le posteur confond les roles de volatile et de section critique ou d'opération atomique...

  5. #5
    ndp
    ndp est déconnecté
    Membre expérimenté Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    comme si bien mentionné dans la faq de ce site, le mot clé volatile n'est pas nécessairement respecté par la jvm. De plus, à voir la question initiale (ok sans le code) j'ai l'impression que le posteur confond les roles de volatile et de section critique ou d'opération atomique...
    hum.. le mot cle volatile? le model de memoire java? Il faudrait un peu plus de precisions dans la FAQ.

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    y a une bonne explication (en anglais) sur les cas d'utilisation du volatile ici:
    http://www.ibm.com/developerworks/ja...GX02&S_CMP=EDU

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

Discussions similaires

  1. Fonction Quoted printable qui ne fonctionne pas.
    Par leCcsympas dans le forum C
    Réponses: 3
    Dernier message: 13/01/2007, 18h54

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