The
stereotyped
application
objects include active
objects and guarded objects (also known as protected objects, synchronized
objects, or monitors).
Active objects and concurrency
Active
objects are application objects that
own a thread of control. Active objects have controller capabilities.
Each active object owns an event queue through which it processes
its incoming events. By default, subobjects share the thread (and
consequently the event queue) of their parent object, unless they
are also active, in which case they each own their own thread.
Guarded objects
Guarded objects encapsulate
data shared by
several active objects or tasks. They do not own their own threads
but can synchronize calls from various threads.