Safety
Causes of safety problems
- read/write conflicts: access by clients to illegal transient state values
- write/write conflicts: inconsistent assignment to variables by concurrently executing update methods
Safe objects
- Immutable objects - avoid state changes (example: String class)
- Fully synchronized objects - dynamically ensure exclusive access
- Contained objects - structurally ensure exclusive access, only one thread at a time can access an object