Unlike deadlock and livelock situations, the threads in a lock convoy do progress; however, each time a thread attempts to acquire the lock and fails, it relinquishes the remainder of its scheduling quantum and forces a context switch.
In contrast to deadlock and livelock scenarios, threads within a lock convoy continue their execution; however, when a thread tries to acquire the lock but fails, it gives up the remainder of its allocated time slice and forces a system switch.