title: Is there a name for this concurrency pattern?
body: <p>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.</p>
  
  <p>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.</p>
  
  <p>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.</p>
  
  <p>This reference must be volatile to ensure visibility to all threads.</p>
  
  <p>As long as its not imperative that the critical path code <em>always</em> have the most recent data available, this works great, with the absolute minimum performance impact (all data goes through a volatile ref).</p>
  
  <p>The real question is, <strong>is there a name for this concurrency design pattern</strong>?</p>
  
  <p>The language in question is Java, but I think this applies to most that support a shared-memory concurrency style of programming.</p>