- 10 Ways to Reduce Lock Contentions in Threaded Programs, Michael Suess, Blog "Thinking Parallel", July 31, 2007
One feasible and well-known solution is to never write them by ourselves but to let libraries handle it. Doug Lea's book on design patterns in Java thread programming covers most of important techniques for the problem domain and they are now available as the standard java.util.concurrent package in Java.
However, as you know, it may not solve all you need. Then let's get back to the principals Michael has just extracted for us.