packagecom.my.nubase64;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;/*** socket服务端:多线程处理
*
*@authorzhang
**/
public classMultiThreadServer {private int port = 8821;privateServerSocket serverSocket;privateExecutorService executorService;private final int POOL_SIZE = 10;public MultiThreadServer() throwsIOException {
serverSocket= newServerSocket(port);
executorService=Executors.newFixedThreadPool(Runtime.getRuntime()
.availableProcessors()*POOL_SIZE);
System.out.println("服务已启动");
}public voidservice() {while (true) {
Socket socket= null;try{
socket=serverSocket.accept();
executorService.execute(newHandler(socket));
}catch(Exception e) {
e.printStackTrace();
}
}
}public static void main(String[] args) throwsIOException {newMultiThreadServer().service();
}
}class Handler implementsRunnable {public static final String CHARCODE_UTF8 = "utf-8";privateSocket socket;publicHandler(Socket socket) {this.socket =socket;
}private BufferedWriter getWriter(Socket socket) throwsIOException {return new BufferedWriter(newOutputStreamWriter(
socket.getOutputStream(), CHARCODE_UTF8));
}private BufferedReader getReader(Socket socket) throwsIOException {
InputStream socketIn=socket.getInputStream();return newBufferedReader(newInputStreamReader(socketIn, CHARCODE_UTF8));
}public voidrun() {
BufferedReader br= null;
BufferedWriter out= null;try{
br=getReader(socket);
out=getWriter(socket);
String msg= null;while ((msg = br.readLine()) != null) {
System.out.println("msg:" +msg);
String res= "wwwwwwwwwwww哈哈w1241243123";
res= res + "
";
out.write(res);
out.flush();
}
}catch(IOException e) {
e.printStackTrace();
}finally{try{if (socket != null)
socket.close();
}catch(IOException e) {
e.printStackTrace();
}try{if (br != null)
br.close();
}catch(IOException e) {
e.printStackTrace();
}try{if (out != null)
out.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
}