zoukankan      html  css  js  c++  java
  • Java回调

    回调接口

    public interface CSCallBack {
        void process(String status);
    }

    服务端实现

    import lombok.extern.slf4j.Slf4j;
    
    @Slf4j
    public class Server {
        public void getClientMsg(CSCallBack csCallBack , String msg) {
            log.info("【服务端】接收到客户端发送的消息为:{}", msg);
    
            // 模拟服务端需要对数据处理
            try {
                Thread.sleep(15 * 1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            log.info("【服务端】执行完成");
            String status = "200";
            log.info("【服务端】数据处理成功,返回成功状态:{}", status);
            csCallBack.process(status);
        }
    }

    客户端实现

    import lombok.extern.slf4j.Slf4j;
    @Slf4j
    public class Client implements CSCallBack {
        private Server server;
    
        public Client(Server server) {
            this.server = server;
        }
    
        public void sendMsg(final String msg) {
            log.info("【客户端】发送消息:" + msg);
            // 新起线程的作用就是使asynchronizationTest方法得以异步调用
            new Thread(() -> {
                server.getClientMsg(Client.this, msg);
            }).start();
        }
        /**
         * 具体的回调方法
         *
         * @param status
         */
        public void process(String status) {
            log.info("【客户端】接收到服务端回调状态为:{}", status);
        }
    
        public void asynchronizationTest() {
            log.info("【客户端】异步代码被输出");
        }
    }

    测试

    /**
     * 1、接口作为方法参数,其实际传入引用指向的是实现类
     * 2、Client的sendMsg方法中,参数为final,因为要被内部类一个新的线程可以使用。这里就体现了异步。
     * 3、调用server的getClientMsg(),参数传入了Client本身(对应第一点)。
     */
    public class CallBackTest {
        public static void main(String[] args) {
            Server server = new Server();
            Client client = new Client(server);
    
            client.sendMsg("Server,Hello~,等待返回消息");
            client.asynchronizationTest();
        }
    }
  • 相关阅读:
    阅读任务
    自我介绍
    学习总结
    第十二周课程总结
    第十一周课程总结
    第十周课程总结
    第九周课程总结&实验报告(七)
    第四周课程总结&实验报告
    第3周Java编程总结
    学习总结
  • 原文地址:https://www.cnblogs.com/dayaodao/p/8708886.html
Copyright © 2011-2022 走看看