多线程Java Socket编程示例
这篇做为学习孙卫琴<<Java网络编程精解>> 5的ExecutorService来进行线程池的方式实现多线程,模拟客户端多用户向同一服务器端发送请求.
package sterning;
import ;
import ;
import ;
import ;
import ;
import ;
import .*;
import .*;
public class MultiThreadServer {
private int port=8821;
private ServerSocket serverSocket;
private ExecutorService executorService;//线程池
private final int POOL_SIZE=10;//单个CPU线程池大小
public MultiThreadServer() throws IOException{
serverSocket=new ServerSocket(port);
//Runtime的availableProcessor()方法返回当前系统的CPU数目.
executorService=(().availableProcessors()*POOL_SIZE);
("服务器启动");
}
public void service(){
while(true){
Socket socket=null;
try {
//接收客户连接,只要客户进行了连接,ept();从而建立连接
socket=();
(new Handler(socket));
} catch (Exception e) {
();
}
}
}
public static void main(String[] args) throws IOException {
new MultiThreadServer().service();
}
}
class Handler implements Runnable{
private Socket socket;
public Handler(Socket socket){
=socket;
}
private PrintWriter getWriter(Socket socket) throws IOException{
OutputStream socketOut=();
return new PrintWriter(socketOut,true
);
}
private BufferedReader getReader(Socket socket) throws IOException{
InputStream socketIn=();
return new BufferedReader(new InputStreamReader(socketIn));
}
public String echo(String msg){
return "echo:"+msg;
}
多线程Java_Socket编程示例 来自淘豆网www.taodocs.com转载请标明出处.