服务器端Socket实现多线程通信

public class MultiThreadServer {
	private static int port = new GetConfigurationInfo().port;
	private ServerSocket serverSocket;
	private ExecutorService executorService; //线程池
	private final int POOL_SIZE = 10; //单个CPU线程池大小
	
	public MultiThreadServer(){
		try {
			serverSocket = new ServerSocket(port);
			//Runtime的availableProcessor()返回当前系统的CPU个数
			executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*POOL_SIZE);
			System.out.println("服务器启动");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void service(){
		while(true){
			Socket socket = null;
			try {
				socket = serverSocket.accept();
				executorService.execute(new Handler(socket));//在未来的某个时间执行给定命令
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}
	
	
	public static void main(String[] args) {
		MultiThreadServer multi = new MultiThreadServer();
		multi.service();
		
	}
	
}

class Handler implements Runnable{
	private Socket socket;
	public Handler(Socket socket){
		this.socket = socket;
	}
		
	public void run(){
		//自己的处理过程	
		
	}
}

你可能感兴趣的:(socket)