我有责任链,它由3个阶段。与线程池链责任
我对阶段实现这个样子。
public class InitialStage implements RecordHandler {
private RecordHandler next;
@Override
public void setNext(RecordHandler handler) {
if (this.next == null) {
this.next = handler;
} else {
this.next.setNext(handler);
}
}
@Override
public void handleRequest(String record) {
System.out.println("Processing @ Initial Stage.");
if (next != null) {
next.handleRequest(record);
}
}
}
流程经理
public class ProcessManager {
private RecordProcessor processor = new RecordProcessor();
public ProcessManager()
{
createPipeLine();
}
private void createPipeLine() {
processor = new RecordProcessor();
processor.addHandler(new InitialStage());
processor.addHandler(new MiddleStage());
processor.addHandler(new FinalStage());
}
public void processRecord(String record){
processor.handleRequest(record);
}
}
接口
public interface RecordHandler {
public void setNext(RecordHandler handler);
public void handleRequest(String record);
}
最后的RecordProcessor,
public class RecordProcessor {
private RecordHandler successor;
private RecordHandler first;
public RecordProcessor(){
}
public void addHandler(RecordHandler recordHandler){
if(this.first == null){
this.first = recordHandler;
}
else{
this.successor.setNext(recordHandler);
}
this.successor = recordHandler;
}
public void handleRequest(String record){
first.handleRequest(record);
}
}
现在我观察到我的中期阶段需要一些时间来完成。所以现在我对使用一个线程池感兴趣,因此记录将以下面的方式处理。
在这里,我认为3个工作线程。
问题
如何正确地修改我现有的COR,以满足新的要求?
通过在类似于http://ideone.com/ql0848的阶段之间传递'Future's? – zapl