public CellIterator getCellIterator() {
if (numOfThreads == 1) {
return new SequentialCellIterator();
} else if (numOfThreads > 1) {
return new ParallelCellIterator(numOfThreads, getThreadsExecutor());
} else {
throw new RuntimeException("Invalid number of threads: " + numOfThreads);
}
}