add SynchronizedObject
change

implement lock()/unlock() in SynchronizedObject
move Dispatcher::deleteTimer() logic to ~Dispatcher()