title: Can `ItemReader` in spring batch wait until the point in time when the data can be available for processing similar like Blocking Queues?
body: <p>At present I am following the below strategy for processing items in a <code>step</code>. </p>
  
  <pre><code>TaskletStep processingStep = stepBuilderFactory.get(getLabel() + "-" + UUID.randomUUID().toString())
                          .&lt;Object, Object&gt;chunk(configuration.getChunkSize())
                          .reader(reader)
                          .processor(processor)
                          .writer(writer).transactionManager(txManager).build();
  TypedJobParameters typedJobParameters = new TypedJobParameters();
  runStep(processingStep, typedJobParameters);
  </code></pre>
  
  <p>This <code>Task Step</code> does some additional work too like compressing the file and copying it to a different location therefore it took so long time to complete. How can I offload this additional work to background threads. </p>
  
  <p>If  background thread keep polling till new file arrives for compression then it may consume more <code>CPU cycles</code> whereas if we can put that thread on wait and notify it when new file arrives then it will become more complex.      </p>
  
  <p>How can I start a new <code>TaskStep</code> parallel to my existing above <code>TaskStep</code> in such way that <code>ItemReader</code> of that new <code>TaskStep</code> wait until the point in time when the file arrives for processing like <code>blocking queues</code>?       </p>