Two articles from developerWorks

Acquire multiple locks in a fixed, global order to avoid deadlock
Deadlock is one of the most difficult problems to handle in multithreaded
code. Finding and fixing it is arduous and time consuming because it can
occur in the least expected places.,p=deadlock

Distributed object graph traversal, preparation, and transport
Explore an alternative to directly transporting business objects from the
server to the client.,p=j.distObj