The problem: we have critical path code that should never block. In many places it relies on configuration data, or similar, infrequently updated data from an external source.
When we need to reload configuration data, or refresh data from an external source, we don't want to lock access to that data and potentially block the critical path threads.
The solution: move the data in question to its own class. Use a background thread to fully perform the reload and validate the data. Then, when its ready, overwrite the old data reference with the new one.
This reference must be volatile to ensure visibility to all threads.
As long as its not imperative that the critical path code always have the most recent data available, this works great, with the absolute minimum performance impact (all data goes through a volatile ref).
The real question is, is there a name for this concurrency design pattern?
The language in question is Java, but I think this applies to most that support a shared-memory concurrency style of programming.