Move lock out of try and use Signal intead of signalAll