public void run() { while (numActiveWorkers.get() != 0) { try { List<SimilarItems> similarItemsOfABatch = results.poll(10, TimeUnit.MILLISECONDS); if (similarItemsOfABatch != null) { foreach (SimilarItems similarItems in similarItemsOfABatch) { writer.add(similarItems); numSimilaritiesProcessed += similarItems.numSimilarItems(); } } } catch (Exception e) { throw new RuntimeException(e); } } }