This is entirely subjective to the design requirements of your game but, generally speaking, usually most systems use an event-based system where objects register for events. It allows for a pretty flexible system where you can design anything from HID input to timers to trigger events.
If you would like to see a pretty strong example of how this can be done in a managed language, check out the source code for the Delta Engine. It's in c# but c# is incredibly easy to interpret in a java sense.