Quelqu'un peut-il expliquer à quoi AtomicLong est utilisé? Par exemple, quelle est la différence dans les déclarations ci-dessous?
private Long transactionId;
private AtomicLong transactionId;
Il existe des différences significatives entre ces deux objets, bien que le résultat net soit le même, ils sont certainement très différents et utilisés sous circonstances très différentes.
Vous utilisez un objet Long
de base lorsque:
Vous utilisez un AtomicLong
lorsque:
Long
en soi ne permet pas l'interopérabilité des threads car deux threads peuvent à la fois voir et mettre à jour la même valeur, mais avec un AtomicLong
, il existe des garanties assez décentes autour de la valeur que plusieurs threads verront .
En effet, à moins que vous ne vous souciez jamais de travailler avec des threads, vous n'aurez pas besoin d'utiliser AtomicLong
.