這里模擬個(gè)場景:客戶端發(fā)送msg給服務(wù)端,服務(wù)端處理后(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("客戶端:服務(wù)器端回調(diào)狀態(tài)為:" + status);
}
}
模擬服務(wù)端
public class Server
{
public void getClientMsg(CSCallBack csCallback, String msg)
{
System.out.println("服務(wù)端:服務(wù)器端接收到客戶端發(fā)送的消息為:" + msg);
try
{
Thread.sleep( 5 * 1000);
}catch(InterruptedException e)
{
e.printStackTrace();
}
System.out.println("服務(wù)器端:數(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~");
}
}
輸出結(jié)果
客戶端:發(fā)送的消息為:Server , Hello~
客戶端:異步發(fā)送成功
服務(wù)端:服務(wù)器端接收到客戶端發(fā)送的消息為:Server , Hello~
服務(wù)器端:數(shù)據(jù)處理成功,返回成功狀態(tài) 200
客戶端:服務(wù)器端回調(diào)狀態(tài)為:200
這里可能會(huì)有疑問,就是為什么是先打印“異步發(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();
//修改的地方在這里,添加了一個(gè)循環(huán)
for(int i =0; i < 5; i++)
{
System.out.println("客戶端:異步發(fā)送成功----" + i );
}
}
@Override
public void process(String status)
{
System.out.println("客戶端:服務(wù)器端回調(diào)狀態(tài)為:" + status);
}
}
輸出結(jié)果
客戶端:發(fā)送的消息為:Server , Hello~
客戶端:異步發(fā)送成功----0
客戶端:異步發(fā)送成功----1
服務(wù)端:服務(wù)器端接收到客戶端發(fā)送的消息為:Server , Hello~
客戶端:異步發(fā)送成功----2
服務(wù)器端:數(shù)據(jù)處理成功,返回成功狀態(tài) 200
客戶端:異步發(fā)送成功----3
客戶端:服務(wù)器端回調(diào)狀態(tài)為:200
客戶端:異步發(fā)送成功----4
可以看到這里體現(xiàn)了線程的時(shí)間片輪轉(zhuǎn)機(jī)制。