Mã hiện tại của tôi sử dụng hàng loạt các quy trình không đồng bộ đạt đến kết quả cao nhất. Tôi cần phải bọc mỗi trong số này theo cách mà mỗi được truy cập bởi một phương pháp đồng bộ với kết quả như là một giá trị trả về. Tôi muốn sử dụng dịch vụ thực thi để thực hiện điều này, để cho phép nhiều dịch vụ này xảy ra cùng một lúc. Tôi có cảm giác rằng Tương lai có thể thích hợp với việc thực hiện của tôi, nhưng tôi không thể tìm ra cách tốt để thực hiện điều này.Gói một loạt các cuộc gọi không đồng bộ với một phương thức đồng bộ với giá trị trả về
Những gì tôi có bây giờ:
public class DoAJob {
ResultObject result;
public void stepOne() {
// Passes self in for a callback
otherComponent.doStepOne(this);
}
// Called back by otherComponent once it has completed doStepOne
public void stepTwo(IntermediateData d) {
otherComponent.doStepTwo(this, d);
}
// Called back by otherComponent once it has completed doStepTwo
public void stepThree(ResultObject resultFromOtherComponent) {
result = resultFromOtherComponent;
//Done with process
}
}
này đã làm việc khá tốt trong nội bộ, nhưng bây giờ tôi cần phải lập bản đồ quy trình của tôi vào một phương pháp đồng bộ với một giá trị trả về như:
public ResultObject getResult(){
// ??? What goes here ???
}
Có ai có một ý tưởng hay về cách thực hiện điều này một cách thanh lịch?
Một điều bị thiếu trong thông số này: làm thế nào để bạn có kế hoạch kết hợp các ResultObject của các nhiệm vụ khác nhau vào một duy nhất ở cuối? –
Tôi không chắc mình có hiểu câu hỏi hay không. Thông thường, quá trình này được khởi động bởi DoAJob.stepOne() mới; phương thức stepTwo() được bắt đầu bằng một cuộc gọi lại từ otherComponent. Ở cuối chuỗi gọi lại, ResultObject được điền chính xác. Bất kỳ bit dữ liệu trung gian nào cũng được tích hợp vào kết quả cuối cùng. – irondwill