88 votes

Qu'est-ce qu'un objet sans état en Java ?

Actuellement, je lis "Java concurrency in practice", qui contient cette phrase :

Étant donné que l'action d'un thread accédant à un objet sans état ne peut pas affecter l'exactitude des opérations sur d'autres threads, les objets sans état sont thread-safe.

Alors, qu'est-ce qu'un objet sans état ?

125voto

Bozho Points 273663

L'objet sans état est une instance d'une classe sans champs d'instance (variables d'instance). La classe peut avoir des champs, mais ce sont des constantes de compilation (final statique).

Un terme très apparenté est immuable . Les objets immuables peuvent avoir un état, mais il ne change pas lorsqu'une méthode est invoquée (les invocations de méthode n'affectent pas de nouvelles valeurs aux champs). Ces objets sont également thread-safe.

5voto

om-nom-nom Points 33691

Le concept d'objet sans état est fortement couplé avec le concept d' effets secondaires . En bref, c'est l'objet qui n'a pas de champs en dessous qui pourraient avoir des valeurs différentes, en fonction de l'ordre différent des appels de méthode.

2voto

Tom Points 2694

Un objet sans état, comme des variables d'instance qui peuvent changer et varier en fonction de ce qui est déjà arrivé à l'objet

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X