回调的简单应用

2020-08-30  本文已影响0人  溪水散人

什么时候要用到回调呢?在笔者的工作场景中:调用第三方的API发推送,耗时需要200ms-500ms作用(网路问题),调用对方API后,会返回一个调用结果给你,我们利用这个回调结果进行数据的更新

一个简单的回调helloworld

public interface CallBackInterface {
    /**
     * 回调接口返回东西
     * @param rtResult
     */
    void reSomething(RtResult rtResult);
}
public class ToDoHandler {
     private static final Logger log = LoggerFactory.getLogger(ToDoHandler.class);
    public void handleSomething(NeedProcess process, CallBackInterface callBackInterface) {
        String name = process.getName();
        log.info("handler 处理是事情");
        RtResult rtResult = new RtResult(name);
        callBackInterface.reSomething(rtResult);
    };
}
public class MyClient {
    private static final Logger log = LoggerFactory.getLogger(MyClient.class);
    public static ThreadPoolExecutor executor = new ThreadPoolExecutor(1, 2, 1000, TimeUnit.MINUTES, new LinkedBlockingDeque<>(), Executors.defaultThreadFactory(), new ThreadPoolExecutor.DiscardPolicy());

    public static void main(String[] args) {
        NeedProcess needProcess = new NeedProcess();
        needProcess.setName("Lucy");
        executor.execute(() -> dos(needProcess));
    }

    public static void dos(NeedProcess needProcess) {
        ToDoHandler handler = new ToDoHandler();
        handler.handleSomething(needProcess, new CallBackInterface() {
            @Override
            public void reSomething(RtResult rtResult) {
                log.info("回调处理事情" + rtResult.getResult());
            }
        });
    }
}
[pool-1-thread-1] INFO com.hx.learn.async.realasync.ToDoHandler - handler 处理是事情
[pool-1-thread-1] INFO com.hx.learn.async.realasync.MyClient - 回调处理事情Lucy

主要逻辑

上一篇 下一篇

猜你喜欢

热点阅读