有时候我们会遇到这样的场景
客户端请求一个接口,返回需要的数据,然后根据这些数据做相应的操作,然后这个接口还要等待对应的操作已经执行,再做出回应。
举个栗子。app端请求后台接口A,A要处理app传过来的数据,return一个结果码给app,这个时候A还没有执行完,A还要等待app根据结果码做出处理,比如打开某个开关,A要一直监听这个开关到底打开了没有,如果打开了,就发送通知给web端,通知web端做相应的处理。
在java中,单线程情况下执行return后整个方法就结束了,所以要完成上面的需求,就需要我们在return数据之前新开一个线程去监听那个开关。
大致的代码如下,我们用java8的方式来创建这个线程
public Result A(){
//处理数据的逻辑
………………
Thread thread = new Thread(() -> this.wait(json));//wait方法是监听开关的方法
thread.start();
//返回给接口调用者
return Result.success(appJson);
}
public void wait(){
int second = 120;//等待120秒
while (second > 0) {
Thread.sleep(1000);
second--;
//等待开关打开 然后做对应的操作
if(open){
……………………
break;
}
}
}