這里模擬個場景:客戶端發(fā)送msg給服務端,服務端處理后(5秒),回調(diào)給客戶端,告知處理成功。代碼如下:
回調(diào)接口類
public interface CSCallBack
{
public void process(String status);
}
模擬客戶端
public class Client implements CSCallBack
{
private Server server;
public Client(Server server)
{
this.server = server;
}
public void sendMsg(final String msg)
{
System.out.println("客戶端:發(fā)送的消息為:" + msg);
new Thread(new Runnable()
{
@Override
public void run()
{
server.getClientMsg(Client.this, msg);
}
}).start();
System.out.println("客戶端:異步發(fā)送成功" );
}
@Override
public void process(String status)
{
System.out.println("客戶端:服務器端回調(diào)狀態(tài)為:" + status);
}
}
模擬服務端
public class Server
{
public void getClientMsg(CSCallBack csCallback, String msg)
{
System.out.println("服務端:服務器端接收到客戶端發(fā)送的消息為:" + msg);
try
{
Thread.sleep( 5 * 1000);
}catch(InterruptedException e)
{
e.printStackTrace();
}
System.out.println("服務器端:數(shù)據(jù)處理成功,返回成功狀態(tài) 200");
String status = "200";
csCallback.process(status);
}
}
測試類
public class CallBackTest
{
public static void main(String[] args)
{
Server server = new Server();
Client client = new Client(server);
client.sendMsg("Server , Hello~");
}
}
輸出結果
客戶端:發(fā)送的消息為:Server , Hello~
客戶端:異步發(fā)送成功
服務端:服務器端接收到客戶端發(fā)送的消息為:Server , Hello~
服務器端:數(shù)據(jù)處理成功,返回成功狀態(tài) 200
客戶端:服務器端回調(diào)狀態(tài)為:200
這里可能會有疑問,就是為什么是先打印“異步發(fā)送成功”,然后再執(zhí)行新的線程。
把客戶端的代碼改一下
public class Client implements CSCallBack
{
private Server server;
public Client(Server server)
{
this.server = server;
}
public void sendMsg(final String msg)
{
System.out.println("客戶端:發(fā)送的消息為:" + msg);
new Thread(new Runnable()
{
@Override
public void run()
{
server.getClientMsg(Client.this, msg);
}
}).start();
//修改的地方在這里,添加了一個循環(huán)
for(int i =0; i < 5; i++)
{
System.out.println("客戶端:異步發(fā)送成功----" + i );
}
}
@Override
public void process(String status)
{
System.out.println("客戶端:服務器端回調(diào)狀態(tài)為:" + status);
}
}
輸出結果
客戶端:發(fā)送的消息為:Server , Hello~
客戶端:異步發(fā)送成功----0
客戶端:異步發(fā)送成功----1
服務端:服務器端接收到客戶端發(fā)送的消息為:Server , Hello~
客戶端:異步發(fā)送成功----2
服務器端:數(shù)據(jù)處理成功,返回成功狀態(tài) 200
客戶端:異步發(fā)送成功----3
客戶端:服務器端回調(diào)狀態(tài)為:200
客戶端:異步發(fā)送成功----4
可以看到這里體現(xiàn)了線程的時間片輪轉機制。