With unlock -> notify order the thread can be preempted by other thread, for example one that wants to lock the very same lock. This would produce incorrect ordering of lock release and acquire events.