package edu.stanford.nlp.util.concurrent;
/**
* Objects that wish to use MulticoreWrapper for multicore support must implement
* this interface. Objects that implement this interface should, of course, be threadsafe.
*
* @author Spence Green
*
* @param <I> input type
* @param <O> output type
*/
public interface ThreadsafeProcessor<I,O> {
/**
* Set the input item that will be processed when a thread is allocated to
* this processor.
*
* @param input the object to be processed
* @return the result of the processing
*/
O process(I input);
/**
* Return a new threadsafe instance.
*/
ThreadsafeProcessor<I,O> newInstance();
}