@Retention(value=SOURCE) @Documented @Target(value=FIELD) public @interface CopyOnWrite
Fields marked by this annotation always holds on to an immutable collection. A change to the collection must be done by first creating a new collection object, making changes, then replacing the reference atomically.
This allows code to access the field without synchronization, and greatly reduces the risk of dead-lock bugs.
The field marked with this annotation usually needs to be marked as
volatile
.
Copyright © 2004–2019. All rights reserved.