@Override
    public void run() {
        while (alive && field.getNumberOfItems('D') > 0) {
            Position[] neighbors = getNeighbors(position);
            for (int i = 0; i < neighbors.length; i++) {
                Position neighbor = neighbors[i];
                try {
                    sleep(random.nextInt(100));
                } catch (InterruptedException ex) {
                }
                synchronized (field) {
                    if (this.hunt(neighbor)) {
                        this.countHunted();
                        field.moveItem(this, position, neighbor);
                        neighbors = getNeighbors(position);
                    }
                }
            }
        }
    }