看一个接口回调的例子

这个例子做了一个客户端发消息到服务端的场景。


1、接口回调,顾名思义,就是用接口来调用方法

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

2、这个接口想在哪儿使用都可以。

public class Server {
    public void getClientMsg(Call call, String msg) {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + "   服务端对消息处理了5秒");
        String status = "200";
        call.process(status);
    }
}

3、凑一个场景。

public class Client implements Call {

    private Server server;

    private volatile boolean bol = true;

    public Client(Server server) {
        this.server = server;
    }

    public void sendMsg(final String msg) {
        System.out.println(Thread.currentThread().getName() + "   客户端给服务端发送了一个消息");
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName() + "   消息经过了3秒传到了服务端");
                server.getClientMsg(Client.this, msg);
            }
        }).start();
        System.out.println(Thread.currentThread().getName() + "   客户端发送消息成功了");
        while (bol) {
            System.out.println(Thread.currentThread().getName() + "   客户端继续向下执行");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println(Thread.currentThread().getName() + "   客户端停止执行");
    }

    @Override
    public void process(String status) {
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + "   经过了3秒,客户端收到了服务端返回的消息");
        System.out.println(Thread.currentThread().getName() + "   收到了消息就让客户端下班吧!");
        bol = false;
    }

}


4、输出效果。

public class Main {
    public static void main(String[] args) {
        Server server = new Server();
        Client client = new Client(server);
        client.sendMsg("Hello World");
    }
}

main   客户端给服务端发送了一个消息
main   客户端发送消息成功了
main   客户端继续向下执行
main   客户端继续向下执行
main   客户端继续向下执行
main   客户端继续向下执行
Thread-0   消息经过了3秒传到了服务端
main   客户端继续向下执行
main   客户端继续向下执行
main   客户端继续向下执行
main   客户端继续向下执行
main   客户端继续向下执行
Thread-0   服务端对消息处理了5秒
main   客户端继续向下执行
main   客户端继续向下执行
main   客户端继续向下执行
Thread-0   经过了3秒,客户端收到了服务端返回的消息
Thread-0   收到了消息就让客户端下班吧!
main   客户端停止执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值