public static ClosableBlockingQueue<InputData> testQueue(int start) { final ClosableBlockingQueue<InputData> dataQueue = new ClosableBlockingQueue<>(5); final ExecutorService executorService = Executors.newSingleThreadExecutor( new ThreadFactoryBuilder() .setNameFormat("test-queue-supplier-%d") .setDaemon(true) .build()); CompletableFuture.supplyAsync( () -> { for (int i = 0; i < 10; i++) { try { // TimeUnit.SECONDS.sleep(2); dataQueue.put(new InputData("data", i + start + 1)); } catch (InterruptedException e) { e.printStackTrace(); } } try { dataQueue.close(); } catch (IOException e) { e.printStackTrace(); } return true; }, executorService); return dataQueue; }