code: public void process(WebcamTask task) throws InterruptedException {
  
  		if (started.compareAndSet(false, true)) {
  			runner = Executors.newSingleThreadExecutor(new ProcessorThreadFactory());
  			runner.execute(processor);
  		}
  
  		if (!runner.isShutdown()) {
  			processor.process(task);
  		} else {
  			throw new RejectedExecutionException("Cannot process because processor runner has been already shut down");
  		}
  	}
docs: Process single webcam task.
  
  @param task the task to be processed
  @throws InterruptedException when thread has been interrupted