This table shows which threading models can you use as children based on the model of the parent.
Compatibility Matrix
| Parent↓ Child→ | Actor | Freezable | Immutable | Private | Reader-Writer Synchronized | Synchronized | Thread Affine | Thread Unsafe |
|---|---|---|---|---|---|---|---|---|
| Actor | No | Yes | Yes | Yes | No | No | No | Yes |
| Freezable | No | Yes | Yes | Yes | No | No | No | No |
| Immutable | No | Yes | Yes | Yes | No | No | No | No |
| Reader-Writer Synchronized | Yes (Own) | Yes | Yes | Yes | Yes (Shared) | No | No | No |
| Synchronized | Yes (Own) | Yes | Yes | Yes | Yes (Shared) | Yes (Shared) | No | No |
| Thread Affine | Yes (Own) | Yes | Yes | Yes | No | No | Yes | Yes (Shared) |
| Thread Unsafe | Yes (Own) | Yes | Yes | Yes | No | No | Yes | Yes (Shared) |
| Private |
When you assign an object with a threading model to another object with a threading model as a child, the assignment statement will block until the thread has full access to both objects. For a Synchronized object, that means it has the lock. For a ReaderWriterSynchronized object, that means it has the write lock. The same is true for an assignment which removes the parent-child link from two objects.
See Also
Other Resources