提要
基于TCP协议编写客户端应用的时候,需要使用TCP协议连接到服务器。
客户端的相关接口要等到连接成功后才能被调用,而客户端与服务器之间的连接过程通常都是异步的,要等到客户端连接成功的返回才能继续操作,这个时候就需要消费-生产者模型。产品是连接,生产者生产了连接,消费者才能正常使用。
示例代码如下:
public class TcpConnection {
private final Object lock = new Object();
private TiConnection connection;
public static TcpConnection getInstance(){
return Single.SINGLE.tcpConnection;
}
private void connectServer() {
new Thread(new Runnable() {
@Override
public void run() {
TiSocketConnector connector = new TiSocketConnector(3,32768,600);
connector.connect("localhost:9089", new TiEventSocketConnect() {
@Override
public void connected(TiConnection tiConnection) {
connection = tiConnection;
synchronized (lock){
try{
lock.notifyAll();
}catch(Exception e){
e.printStackTrace();
}
}
}
@Override
public void connectFailed() {
}
});
}
}).start();
}
public TiConnection getConnection(){
if(connection == null){
connectServer();
synchronized (lock){
try{
lock.wait();
}catch(Exception e){
e.printStackTrace();
}
}
}
return connection;
}
private enum Single {
SINGLE;
private TcpConnection tcpConnection;
private Single(){
this.tcpConnection = new TcpConnection();
}
}
}