Package opennlp.tools.commons

# Annotation Interface ThreadSafe

@Documented @Retention(RUNTIME) public @interface ThreadSafe
Classes, fields, or methods annotated `&#64;ThreadSafe` are safe to use in multithreading contexts. In general, classes that adhere to (one of) the following concepts:

- Statelessness: no methods relies on external state or maintain state at all,
- Immutability: all attributes are `final` so that internal state can't be modified at all,
- Thread locality: non-`final` fields are only accessed via an independently initialized copy,
- Atomicity: all operations on fields are perform via `atomic data types`, or
- Synchronization: all non-final methods, fields, or method local variables are manipulated via locks, that is, in a `synchronized` manner

are safe to use from multiple threads. In addition, thread-safety can be achieved by using the concepts of either

- `ReentrantLock`, or
- `ReadWriteLock`

in which a thread acquires the lock for write operations and protects the locked object or data element from changes until the lock is released.

- ## Optional Element Summary

  Optional Elements
  Modifier and Type
  Optional Element
  Description
  `String`
  `since`
  The OpenNLP release when an element was first declared `thread-safe`.

- ## Element Details

  - ### since

    String since
    The OpenNLP release when an element was first declared `thread-safe`.
    Default:
      ""