|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
public interface ThreadSafeAccess
Interface implemented by message-related objects that avoid exposing mutable data to multiple threads by providing immutable copies. This interface is optional - it is an implementation detail that is tested for dynamically and used only if available.
To avoid "scribbling" where several threads change state within in a single method (typically in inconsistent ways, causing subtle and intermittent errors) we use the following access policy for message related objects:
In practice this means that objects are initially mutable, but become immutable once they are shared.
| Nested Class Summary | |
|---|---|
static class |
ThreadSafeAccess.AccessControl
This helper class can be used by code implementing this interface to determine whether the thread safety of a message should be enforced or not. |
| Field Summary | |
|---|---|
static boolean |
READ
|
static boolean |
WRITE
|
| Method Summary | |
|---|---|
void |
assertAccess(boolean write)
This method may be called before data in the object are accessed. |
ThreadSafeAccess |
newThreadCopy()
|
void |
resetAccessControl()
This method should ONLY be used in the construction of composite ThreadSafeAccess instances. |
| Field Detail |
|---|
static final boolean WRITE
static final boolean READ
| Method Detail |
|---|
void assertAccess(boolean write)
write - True if the access will mutate values.void resetAccessControl()
ThreadSafeAccess newThreadCopy()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||