public void startServer(){
			Selector selector;
			//open server channel
			ServerSocketChannel channel = null;
			SelectionKey key = null;
			try {
				selector = Selector.open();
				channel = ServerSocketChannel.open();
				ServerSocket socket = channel.socket();
				socket.bind(new InetSocketAddress(tcpPort));
				channel.configureBlocking(false);
				key = channel.register(selector, SelectionKey.OP_ACCEPT);
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				clearChannel(channel);
				return;
			}
			running = true;
			//start operator
			if(!operator.start()){
				System.out.println("start server failed, because start operator failed");
				clearChannel(channel);
				running = false;
				return;
			}
			
			while(running){
				int num = 0;
				try {
					num = selector.select();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				if(num > 0){
					//get client connet channel
					SocketChannel clientChannel;
					try {
						selector.selectedKeys().remove(key);
						clientChannel = channel.accept();
						Operator.socketChannelQueue.add(clientChannel);
						operator.wakeup();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
				}
			}
			//clear resource
			if(!running){
				clearChannel(channel);
			}
		
	}