пытаясь пройти с несколькими потоками в orientdb - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь пройти в режиме DFS с несколькими вершинами в качестве начального узла. (начальный узел). они хранятся в очереди блокировки. У меня есть потребительские потоки, которые принимают один узел за раз и выполняют обход dfs. Однако я получаю NPE. не уверен, что не так с кодом. следующий код

class Consumer implements Runnable{

private BlockingQueue<Vertex> queue;
private OrientBaseGraph graph;

public Consumer(BlockingQueue<Vertex> queue) {
    graph = DB.getFactory().getNoTx();  
    graph.makeActive();
    this.queue = queue;
}

@Override
public void run() {
    Vertex v = queue.poll();
    Stack<Vertex> stack = new Stack<>();
    stack.push(v);
    while(!stack.isEmpty()) {
        Vertex current = stack.pop();
        Iterable<Vertex> children = current.getVertices(Direction.OUT, "contains");
        for(Vertex child : children) {
            stack.push(child);
        }
    }           
}

}

Как я могу это исправить или что не так с этой реализацией?

...