私には 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 を正しく変更するにはどうすればよいですか?