Waiting for an object can also be achieved using the threadpool. In some situations this is better because it means you don't need a dedicated thread to wait for the object.
Read more about this here:
http://kristofverbiest.blogspot.com/2008/08/dont-use-dedicated-thread-to-wait-on.html