public void safeMethod(Object obj1, Object obj2) { long longObj1 = obj1.hashCode(); long longObj2 = obj2.hashCode(); obj1 = longObj1 > longObj2 ? obj1: obj2; obj2 = longObj2 > longObj1 ? obj2: obj1; synchronized (obj1) { longTimeMethod(); synchronized (obj2) { unsafeMethod(obj1,obj2); } } }