Um exemplo onde erros de deadlock ocorrem é no banco de dados. Suponha que uma empresa tenha vários vendedores e vários pontos de venda/caixas. O vendedor A vendeu 1 relógio e 1 pulseira. O sistema então solicita o travamento do registro da tabela ESTOQUE que contém o total de relógios em estoque e em seguida solicita o travamento do registro que contém o total de pulseiras em estoque. De posse da exclusividade de acesso aos dois registros, ele lê a quantidade de relógios, subtrai 1 e escreve de novo no registro, o mesmo com o registro de pulseiras. Observe, no entanto que existem diversos caixas operando simultaneamente de forma que se algum outro caixa naquele exato instante estiver vendendo uma pulseira, ele ficará aguardando a liberação do registro das pulseiras para depois alterá-lo. Note que ele só altera os registro depois que for dada exclusividade para ele de TODOS os recursos que ele precisa, ou seja, de todos os registro. Suponha agora que em outro caixa foram vendidos 1 relógio e 1 pulseira e que o outro caixa solicitou o travamento do registro com a quantidade de pulseiras e agora quer o acesso ao de relógios, no entanto o de relógios está travado para o primeiro caixa. Nenhum deles devolve o recurso (registro) sobre o qual tem exclusividade e também não consegue acesso ao outro registro que falta para terminar a operação. Isto é um deadlock.
Fonte:http://wiki.locaweb.com/