|
||||||||||
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 |