web-dev-qa-db-fra.com

Où Sun.misc.Unsafe est-il documenté?

Quelqu'un connaît-il une documentation complète pour Sun.misc.Unsafe?

Je recherche de la documentation sur Unsafe.putOrderedInt(). This était tout ce que j'ai pu trouver.

public native  void putOrderedInt(Object o,
    long offset,
    int x)

     Ordered/Lazy version of #putIntVolatile(Object, long, int) 

Quelqu'un connaît-il une meilleure source?

62
JAM

Il y a un bon article à ce sujet sur le blog de mishadoff ici .

La classe est cependant officiellement sans papiers.

54
mwerschy

Concernant les méthodes putOrdered ..

Vous pouvez appeler cette méthode pour définir le champ volatile sans utiliser de magasin volatile. Si vous exécutez un magasin volatile, vous disposez essentiellement d'une barrière de mémoire de magasin qui garantit que toutes les instructions de magasin avant la barrière se produisent avant la barrière et que la mémoire est visible par assurer que les données sont propagées vers le sous-système de cache .. Donc, lorsque vous avez le magasin volatile, vous devez attendre que le tampon du magasin se vide. Avec putOrdered l'exécution du thread n'attendra pas que le tampon du magasin drain et cela peut améliorer les performances .. Cependant, en conséquence, la valeur stockée ne sera pas visible pour les autres threads immédiatement ..

Si vous regardez AtomicLong (ou d'autres classes Atomic), il existe une méthode lazySet qui exécute réellement putOrderedLong. Le javadoc sur cette méthode est:

Définit finalement à la valeur donnée.

8
Ivan Senic