Active Object
The Active Object design pattern decouples method execution from method invocation for objects that each reside in their thread of control. The goal is to introduce concurrency, by using asynchronous method invocation and a scheduler for handling requests. Wikipedia: Active object. This pattern is also known as Concurrent Object.
Here are more details on the Active Object. The method invocation of the client goes to a proxy, which represents the interface of the Active Object. The servant provides the implementation of the Active Object, which runs in the separate thread. At run-time, the proxy transforms the invocation into a method invocation on the servant. This method invocations are enqueued in an activation list by the scheduler. A scheduler’s event loop runs in the same thread as the servant, dequeues the method invocations from the activation list and dispatches them on the servant. The client obtains the result via a future from the proxy.