callback例子
1.声明callback接口:
public interface ICallBack {
public void process(String result);
}
2.client实现callback接口:
public class Client implements ICallBack {
private RemoteServer server;
public Client(RemoteServer server) {
this.server = server;
}
public void sendMsg(final String msg){
System.out.println("客户端异步发送数据...");
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
server.doRequest(Client.this, msg);
}
}).start();
}
@Override
public void process(String result) {
System.out.println("客户端处理服务器返回结果: "+ result);
}
}
3.服务器处理客户端请求:
public class RemoteServer {
public void doRequest(ICallBack callBack, String msg) {
System.out.println("服务器正在处理,请稍后...");
System.out.println("服务器接收到请求信息: "+ msg);
String result = "[server]: copy that, you do well";
callBack.process(result);
}
}
4.测试用例:
@Test
public void callbackTest() throws InterruptedException {
RemoteServer server = new RemoteServer();
Client client = new Client(server);
client.sendMsg("[007]: this is 007");
Thread.sleep(3000);
}
5.结果:
客户端异步发送数据...
服务器正在处理,请稍后...
服务器接收到请求信息: [007]: this is 007
客户端处理服务器返回结果: [server]: copy that, you do well