You're apparently having problems with #3 -- but all it does is sleep for 25 milliseconds, then wake up and check to see if any monitoring conditions have been triggered. If so, it processes them; if not, it goes back to sleep for another 25 milliseconds and tries again.
I doubt anything is messing with timers. That thread uses an awful lot of CPU for what it does. If I don't use any monitor functions can I safely suspend that thread?