They're part of the Observer pattern. you have one object that notifies a bunch of others when needed. many "observers" may register with an "observable", and all may un-register.
Check out the Head First Design Patterns book, or google "design patterns observer" and you'll find tons of into...
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
There's a good IBM Developerworks tutorial on event delivery techniques, which you can find here. It covers Observer/Observable, JavaBean event techniques and more. [ January 01, 2006: Message edited by: Ulf Dittmer ]