2010-10-19 7 views
0

Impossible de comprendre les méthodes 1 et 3 pour savoir comment il est possible de réaliser une publication en toute sécurité. Quelqu'un peut-il m'aider à comprendre cela avec un exemple si possible.Publication sûre

Pour publier un objet en toute sécurité, à la fois la référence à l'objet et l'état de l'objet doit être rendu visible à autres threads en même temps. Un objet correctement construit peut être en toute sécurité publiée par:

  • Initialiser une référence d'objet à partir d'un initialiseur statique

  • Stockage d'une référence à elle dans un champ volatile ou AtomicReference

  • Enregistrement d'un la référence dans un champ final d'un objet correctement construit

  • St en faisant référence à un champ correctement protégé par un verrou
    .

+0

Ce serait 2 questions. – Raedwald

Répondre

3

Il existe des règles spécifiques de synchronisation dans le modèle de mémoire Java qui définissent le « arrive-avant » les relations dans un programme Java qui déterminent lorsqu'une application est garantie pour voir les valeurs « frais » des variables auxquelles il fait référence . Les méthodes de publication sécurisée permettent d'obtenir une publication sûre en tant que conséquence logique des règles de synchronisation et d'autres règles définies dans la spécification de langage Java.

  1. JLS section 12.4.2 spécifie la procédure par laquelle les classes sont initialisées. La synchronisation qui se produit dans cette procédure est probablement suffisante pour garantir une publication sûre.

  2. JLS section 17.4. Le point 2 traite des champs volatils. Cette propriété de AtomicReferences est une conséquence du comportement spécifié dans les javadocs.

  3. JLS section 17.5.

  4. JLS section 17.4. puce 1

Pour vraiment comprendre ce genre de choses, vous avez besoin de lire tout l'article 17 JLS, soigneusement, un certain nombre de fois.

+0

Oui, lisez-le une fois. était très utile, besoin de relire. merci pour la réponse et la suggestion. – devnull

Questions connexes