#2615: implemented lock for timers, because if elapsed-method takes longer than the timer to elapse again, the method is called by another thread conccurently