protected void _testOneSlowRunnerOutOfTen(final int NUM_THREADS)
    throws Exception
   {
      final long TARGET_PERIOD_MS = 2000L;
      final IDelayTimeProvider dtp = new DelayTimeProviderFactory().newNaive(TARGET_PERIOD_MS);
      //goal: Verify periodicity for all, when one runner (E) out of ten ([A-J]) is slow (but is still faster than period).
      final MultiMeteredDelayedListener mdl = new MultiMeteredDelayedListener(dtp.period_ms(),"Etag",1000L);
      final List<DelayedResource> resources = new ArrayList<DelayedResource> ();
      final PossiblyDelayedCountingAppDaoWorker dowork_counter = new PossiblyDelayedCountingAppDaoWorker();
      final List<String> tags = Arrays.asList( "Atag", "Btag", "Ctag", "Dtag", "Etag", "Ftag", "Gtag", "Htag", "Itag", "Jtag");
      for (String tag : tags)
      {
         resources.add(new DelayedResource(MyAppDaoFactory.newInstance(tag,TARGET_PERIOD_MS),dowork_counter,dtp.period_ms(),MILLISECONDS));
      }
      final DelayQueue<DelayedResource> dq = new DelayQueue<DelayedResource> (resources);
      assertTrue(resources.size() == dq.size());
      List<Thread> threads = new ArrayList<Thread> (NUM_THREADS);
      for (int i=0;i<NUM_THREADS;i++) {
         threads.add(new Thread(new DelayedResourceRunner(dq,dtp,mdl)));
      }
      logger.info("Starting threads...");
      for (Thread t : threads) { t.start(); }
      logger.info("Threads started.");
      Thread.currentThread().sleep(9500L);
      assertTrue(resources.size() == dq.size());
      logger.info("Interrupting threads...");
      for (Thread t : threads) { t.interrupt(); }
      logger.info("Threads interrupted.");
      logger.info("Quiescing...");
      Thread.currentThread().sleep(2100L);
      logger.info("Quiesced.");
      mdl.done();
      Exception first_exception = mdl.first_exception.get();
      if (null != first_exception)
      {
         throw new Exception("failure -- maybe laggard?",first_exception);
      }
      assertTrue(resources.size() == dq.size());
      for (DelayedResource dr : resources)
      {
         final String tag = dr.tag();
logger.warn("working on tag ["+tag+"]");
         final long starts = mdl.starts.get(tag);
         if (4L != starts)
         {
            fail("Expected 4 starts for tag ["+tag+"]; got ["+starts+"]");
         }
         final long completions = mdl.completions.get(tag);
         if (4L != completions)
         {
            fail("Expected 4 completions for tag ["+tag+"]; got ["+completions+"]");
         }
      }
      Thread.currentThread().sleep(2100L);
      first_exception = mdl.first_exception.get();
      if (null != first_exception)
      {
         throw new Exception("failure -- there be laggards",first_exception);
      }
   }