Das lock.release "muss" am besten in einen finally Block (unter Zeile 219). Dadurch wird sichergestellt, das das Lock immer freigeben wird. Sonst kann es unter Umständen  zu einem Deadlock kommen.