public class ConcurrentCharInputReader extends AbstractCharInputReader
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
).
CharInputReader
,
ConcurrentCharLoader
,
CharBucket
buffer, closeOnStop, i, length
Constructor and Description |
---|
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.
|
ConcurrentCharInputReader(char normalizedLineSeparator,
int bucketSize,
int bucketQuantity,
int whitespaceRangeStart,
boolean closeOnStop)
Creates a new instance with the mandatory characters for handling newlines transparently.
|
Modifier and Type | Method and Description |
---|---|
protected void |
reloadBuffer()
Assigns the next "bucket" of characters to the
AbstractCharInputReader.buffer attribute, and updates the AbstractCharInputReader.length to the number of characters read. |
protected void |
setReader(Reader reader)
Starts an input reading thread to load characters from the given reader into "buckets" of characters
|
void |
stop()
Stops the CharInputReader from reading characters from the
Reader provided in AbstractCharInputReader.start(Reader) and closes it. |
addInputAnalysisProcess, charCount, currentParsedContent, currentParsedContentLength, enableNormalizeLineEndings, getChar, getLineSeparator, getQuotedString, getString, lastIndexOf, lineCount, markRecordStart, nextChar, readComment, skipLines, skipQuotedString, skipString, skipWhitespace, start, unwrapInputStream
public ConcurrentCharInputReader(char normalizedLineSeparator, int bucketSize, int bucketQuantity, int whitespaceRangeStart, boolean closeOnStop)
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 calledpublic ConcurrentCharInputReader(char[] lineSeparator, char normalizedLineSeparator, int bucketSize, int bucketQuantity, int whitespaceRangeStart, boolean closeOnStop)
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 calledpublic void stop()
Reader
provided in AbstractCharInputReader.start(Reader)
and closes it.
Also stops the input reading thread.protected void setReader(Reader reader)
setReader
in class AbstractCharInputReader
reader
- the Reader
provided in AbstractCharInputReader.start(Reader)
protected void reloadBuffer()
AbstractCharInputReader.buffer
attribute, and updates the AbstractCharInputReader.length
to the number of characters read.reloadBuffer
in class AbstractCharInputReader
Copyright © 2024 Univocity Software Pty Ltd. All rights reserved.