多线程与socket网络通信
一、多线程
什么是多线程?
百度:“多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。”
多线程有什么用?
执行阻塞任务代码的时候,大部分时间用于等待(等待客户端连接),如果有多个用户,则只能一个一个等待,如果一个用户卡住一秒,处理100个用户就需要100秒,而如果使用多线程,一个线程一个用户,则只需要1秒。
多线程比单线程快吗?
多线程是同时处理多个任务的,如果是密集型计算任务,多线程不见得比单线程快。
多线程实例
Thread thread = new Thread(new Runnable(){
public void run(){
//线程方法
}
});
//启动线程
thread.start()
二、socket网络通信
socket介绍
“网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。”
要发邮件给自己朋友,必须要知道具体地址,而socket通信则是通过ip和端口作为地址的,ip可以理解为一个地区,端口可以理解为门牌号。
socket实例
服务端:
ServerSocket serverSocket = new ServerSocket(9999)
//循环接收客户端请求
while (true){
//这里如果没有客户端连接是会卡住的
Socket socket = serverSocket.accept()
InputStream input = socket.getInputStream()//输入
byte[] buff = new byte[1024]
int len = input.read(buff,0,buff.length)
print new String(buff,0,len)
input.close()
socket.close()
}
客户端:
Socket socket = new Socket(“127.0.0.1”,9999)
OutputStream output = socket.getOutputStream();//输出
output.write(“hello”.getBytes())
output.close()
socket.close()
三、多线程与socket结合
如果要进行同时读写操作,就需要用到多线程了~