A class lock is for static methods, since they are not tied to any instance. They cannot do something like synchronized(this) in there method source, they have no this. Synchronized(this) is a statement more or less equivalent to what changes in a non static method when you put the synchronized key word in front of the method declaration.
An object lock is for non static methods, since non static methods are tied to an instance, they must lock that instance.
I do not have a working example.
If you look closely at this tiny ad, you will see five bicycles and a naked woman:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop