我在一个定期重复的Spring Boot Web服务中安排了一个任务(@EnableSceduling).当该任务触发时,它调用注册对象的Runnable/Run方法.在Run方法中,我需要做工作,在工作完成之前不退出Run方法.问题是我让其他线程做这个Run线程工作所需的其他工作.因此,在Run线程中,我有如下内容:
@Component
public class DoWork implements Runnable {
@override
public void run() {
// Setup clients.
// Call services.
Mono<String> response1 = client1.post();
response1.subscribe(new MyResponseCallback(), new MyErrorCallback());
Mono<String> response2 = client2.post();
response2.subscribe(new MyResponseCallback(), new MyErrorCallback());
Mono<String> responseX = clientX.post();
responseX.subscribe(new MyResponseCallback(), new MyErrorCallback());
while(callbacksWorkCompletedFlag == false) {
Thread.sleep (1000);
}
// Do computation with callback responses.
// After computation is completed, exit run method.
}
}
public class MyResponseCallback implements Consumer<String> {
@override
public void accept (final Sting response) {
// Do work with response.
}
}
public class MyErrorCallback implements Consumer<Throwable> {
@override
public void accept (final Throwable error) {
// Log error.
}
}
在Java/Spring Boot中有没有更好的方法来做到这一点?