title: Android ScheduledThreadPoolExecutor execute delayed task immediately
body: <p>I have a background task that I run using the ScheduledThreadPoolExecutor with code like this.</p>
  
  <pre><code>executor.scheduleWithFixedDelay(new BackgroundSync(), 0, 15, TimeUnit.MINUTES);
  </code></pre>
  
  <p>BackgroundSync implements Runnable. </p>
  
  <p>Sometimes from a user event I want the delayed event to run now and not when the 15 minute timer goes off. </p>
  
  <p>Some requirements:</p>
  
  <ul>
  <li>There should only be one "BackgroundSync" running at a time</li>
  <li>Based off an user event I should be able to schedule a BackgroundSync immediately IF its not running already.</li>
  </ul>