看一个接口回调的例子

来源:互联网 发布:windows dvd 播放器 编辑:程序博客网 时间:2024/05/17 06:29

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


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   客户端停止执行

原创粉丝点击