a method of managing nested monitor locks in a computer program is provided for an application having at least a first thread and a second thread wherein a non - synchronized procedure is processed by the application . the first thread executes an outer software module while the second thread executes an inner software module . a processing state of the second thread code is preserved before the second thread is configured to release an outer monitor of the outer software module . the first thread acquires the outer monitor of the outer software module so that actions may be completed . upon completion of actions by the first thread , the outer monitor of the outer software module is released . the processing state of the second thread is restored , such that , actions of the second thread are allowed to be completed .