写在前面的话:整了一个月的团支部评比,中间还要弄智能车锁的项目,真是忙的天昏地暗飞沙走石,时隔一个月来更新一下博客。
智能车锁:做成与ofo一样的共享项目,目前是前期开发阶段,用到一个socket多线程通信的技术,做一下笔记。
一、socket多线程通信概念
现在的网络进程都是通过socket来通信的,socket连接是一种可持续的长连接,不详http协议是请求-响应形式的短连接。多线程通信是为了解决多个客户端设备与一个服务端设备的通信问题,要求每个客户端与服务端的连接不能相互影响,所以需使用多线程实现并发通信。
二、多线程通信步骤(服务端)
- 主函数循环等待连接
- 接受连接之后开启一个新线程处理服务器与该设备的通信
三、多线程通信代码
public class Main {
public static void main(String[] args) {
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(4444);//服务器监听4444端口
while (true) {
Socket socket = serverSocket.accept();
System.out.println("连接成功:" + socket.toString());
invoke(socket);
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("程序结束");
}
}
private static void invoke(final Socket socket) {
new Thread(new Runnable() {
public void run() {
//处理新连接的代码
}
}).start();
}
}
四、总结
servlet采用的也是多线程并发处理请求,其实多线程并发很简单,就是每一个链接开一个线程即可。