The example in
Using IOUs Example shows how an asynchronous operation can be created. Although the implementation seems straightforward, it has a potential problem—it does not have a way to join with the thread that has been created, so it has no way to insure that the thread has exited before any process eventually exits.
Using an active object solves the join problem. For more information, see
Using Threads To Build Active Objects.