This should be a wrapper for generic types. So the user does not need to wait for data, because it is "always" the latest... (sometimes - if there are needs for stricter assumptions, there are already implementations for this!)
I think, that should be a separate thread, which loads current data from database. The user has only access to the cache data and can configure the sleep timer.