public synchronized CharBucket nextBucket()

in src/main/java/com/univocity/parsers/common/input/concurrent/ConcurrentCharLoader.java [114:166]


	public synchronized CharBucket nextBucket() {
		if (activeExecution == null && !finished) {
			int length = -1;
			try {
				length = readBucket();
				if (length >= 0 && length <= 4) {
					length = readBucket();
				}
			} catch (BomInput.BytesProcessedNotification e) {
				throw e;
			} catch (Exception e) {
				setError(e);
			}

			if(length != -1) {
				activeExecution = new Thread(this, "unVocity-parsers input reading thread");
				activeExecution.start();
			} else {
				finished = true;
				try {
					buckets.put(end);
				} catch(InterruptedException e){
					Thread.currentThread().interrupt();
				} finally {
					stopReading();
				}
			}
		}

		try {
			if (finished) {
				if (buckets.size() <= 1) {
					return end;
				}
			}
			if (currentBucket != null) {
				instances.release(currentBucket);
			}

			Object element = buckets.take();
			if (element == end) {
				finished = true;
				return end;
			} else {
				currentBucket = (Entry<CharBucket>) element;
			}
			return currentBucket.get();
		} catch (InterruptedException e) {
			Thread.currentThread().interrupt();
			finished = true;
			return end;
		}
	}