- Source: Active object
The active object design pattern decouples method execution from method invocation for objects that each reside in their own thread of control. The goal is to introduce concurrency, by using asynchronous method invocation and a scheduler for handling requests.
The pattern consists of six elements:
A proxy, which provides an interface towards clients with publicly accessible methods.
An interface which defines the method request on an active object.
A list of pending requests from clients.
A scheduler, which decides which request to execute next.
The implementation of the active object method.
A callback or variable for the client to receive the result.
Example
= Java
=An example of active object pattern in Java.
Firstly we can see a standard class that provides two methods that set a double to be a certain value. This class does NOT conform to the active object pattern.
The class is dangerous in a multithreading scenario because both methods can be called simultaneously, so the value of val (which is not atomic—it's updated in multiple steps) could be undefined—a classic race condition. You can, of course, use synchronization to solve this problem, which in this trivial case is easy. But once the class becomes realistically complex, synchronization can become very difficult.
To rewrite this class as an active object, you could do the following:
= Java 8 (alternative)
=Another example of active object pattern in Java instead implemented in Java 8 providing a shorter solution.
See also
Concurrent object-oriented programming
Actor model
Futures and promises
Live distributed object
References
External links
Ultra-high performance middleware based on Disruptor Active Object in C++14
Active Object implementation in C++11
Kata Kunci Pencarian:
- Direktori Aktif
- Halaman Peladen Aktif
- Active Server Pages .NET
- Visual Basic
- TON 618
- Microsoft Access
- Sistem somatosensori
- Daftar karakter Game of Thrones
- Daftar kata serapan dari bahasa Inggris dalam bahasa Indonesia
- Daftar bahasa pemrograman
- Active object
- Active object (Symbian OS)
- Active Directory
- ActiveX Data Objects
- ActiveX
- Oberon (programming language)
- ProActive
- Object Linking and Embedding
- Volcano
- Object Oberon