Class ConcurrentCharInputReader

java.lang.Object
com.univocity.parsers.common.input.AbstractCharInputReader
com.univocity.parsers.common.input.concurrent.ConcurrentCharInputReader
All Implemented Interfaces:
CharInput, CharInputReader

public class ConcurrentCharInputReader extends AbstractCharInputReader
A concurrent CharInputReader that loads batches of characters in a separate thread and assigns them to buffer in AbstractCharInputReader when requested.

This class loads "buckets" of characters in the background and provides them sequentially to the AbstractCharInputReader.buffer attribute in AbstractCharInputReader.

The bucket loading process will block and wait while all buckets are full.

Similarly, the reader will block while all buckets are empty. This CharInputReader implementation provides a better throughput than DefaultCharInputReader when reading large inputs (> 100 mb).

See Also:
  • Field Details

    • bucketLoader

      private ConcurrentCharLoader bucketLoader
    • bucketSize

      private final int bucketSize
    • bucketQuantity

      private final int bucketQuantity
    • unwrapping

      private boolean unwrapping
  • Constructor Details

    • ConcurrentCharInputReader

      public ConcurrentCharInputReader(char normalizedLineSeparator, int bucketSize, int bucketQuantity, int whitespaceRangeStart, boolean closeOnStop)
      Creates a new instance with the mandatory characters for handling newlines transparently. Line separators will be detected automatically.
      Parameters:
      normalizedLineSeparator - the normalized newline character (as defined in Format.getNormalizedNewline()) that is used to replace any lineSeparator sequence found in the input.
      bucketSize - the size of an each individual "bucket" used to store characters read from the input.
      bucketQuantity - the number of "buckets" to load in memory. Note the reader will stop if all buckets are full.
      whitespaceRangeStart - starting range of characters considered to be whitespace.
      closeOnStop - indicates whether to automatically close the input when stop() is called
    • ConcurrentCharInputReader

      public ConcurrentCharInputReader(char[] lineSeparator, char normalizedLineSeparator, int bucketSize, int bucketQuantity, int whitespaceRangeStart, boolean closeOnStop)
      Creates a new instance with the mandatory characters for handling newlines transparently.
      Parameters:
      lineSeparator - the sequence of characters that represent a newline, as defined in Format.getLineSeparator()
      normalizedLineSeparator - the normalized newline character (as defined in Format.getNormalizedNewline()) that is used to replace any lineSeparator sequence found in the input.
      bucketSize - the size of an each individual "bucket" used to store characters read from the input.
      bucketQuantity - the number of "buckets" to load in memory. Note the reader will stop if all buckets are full.
      whitespaceRangeStart - starting range of characters considered to be whitespace.
      closeOnStop - indicates whether to automatically close the input when stop() is called
  • Method Details