The listener is more or less a function that gets called every time the pipeline runs. You can write it as a lambda:
Code:
VisionThread visionThread = new VisionThread(usbCamera, myPipeline, () -> {
// listener code here
});
Otherwise you just have a class that implements VisionRunner.Listener. The lambda is good because it makes synchronization easier (see
this screensteps page)