JAVA : variables "volatile"
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

JAVA : variables "volatile"



  1. #1
    DarkSideOfTheMoon

    JAVA : variables "volatile"


    ------

    Bonsoir à tous,

    Nous avons eu nos premiers cours sur les threads en programmation JAVA, et à vrai dire je galère un peu! Je m’entraînais sur un sujet d'exam lorsque je suis tombé sur cette question :

    "Y a-t-il un sens à déclarer volatile une variable locale à un thread ou une variable indice de boucle for? Justifiez brièvement votre réponse."

    Au début j'ai été tenté de dire qu'il n'y en a aucun, sans vraiment pouvoir justifier (je ne suis pas vraiment une flèche en programmation :s) et à force d'y réfléchir je me suis embrouillé tout seul... Quelqu'un pourrait m'éclairer un peu plus? Autant avant, je m'en sortais à peu près en info, mais depuis les threads, les problèmes de synchronisation et d'exclusion mutuelle, etc... je me tire clairement des balles.

    merci d'avance et bonne soirée!

    -----

  2. #2
    Bluedeep

    Re : JAVA : variables "volatile"

    Bonjour

    Citation Envoyé par DarkSideOfTheMoon Voir le message
    "Y a-t-il un sens à déclarer volatile une variable locale à un thread ou une variable indice de boucle for? Justifiez brièvement votre réponse."

    Au début j'ai été tenté de dire qu'il n'y en a aucun, sans vraiment pouvoir justifier (je ne suis pas vraiment une flèche en programmation :s) et à force d'y réfléchir je me suis embrouillé tout seul... Quelqu'un pourrait m'éclairer un peu plus? Autant avant, je m'en sortais à peu près en info, mais depuis les threads, les problèmes de synchronisation et d'exclusion mutuelle, etc... je me tire clairement des balles.
    Je ne connais pas bien java (même pas du tout) mais si la variable est locale à un thread, elle est allouée par ce thread; or, la déclaration volatile vise à supprimer les optims de compilation sur les accès à la variable car ces optims peuvent se révéler conflictuelles avec les accès multithreads; par voie de conséquence, je ne vois pas bien quel intérêt il y aurait à utiliser la déclaration volatile sur ces variables, puisque son instance ne sera accédée que via un seul thread (celui qui l'a crée).

    volatile ne s'applique qu'aux variables susceptibles d'être accédée par plusieurs threads.

    Concernant les boucles for, il me semble que Java ne dispose pas d'instruction équivalente au "Parallel.For" de C# (mais mes très maigres connaissances sur Java ont près de 15 ans, donc je ne m'avancerais pas trop sur ce sujet), donc j'aurais tendance à dire que c'est la même réponse.
    Dernière modification par Bluedeep ; 22/10/2014 à 08h46.

Discussions similaires

  1. JAVA, problème de compréhension "static" et "affectation"
    Par invite78f958b1 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 08/10/2011, 20h17
  2. [JAVA] Temps passe en "Stop the world" pendant un CMS
    Par destroyedlolo dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 08/02/2011, 15h51
  3. Installation "propre" de Java sous XP pack 2
    Par behemerre dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 21/12/2006, 22h13