• Hadoop源码分析2: NIO Socket 分析


    1.客户端

    公司产品的客户端的使用阻塞式的Socket,并没有使用NIO,在Hadoop中遇到再议。

    2.服务器端

    2.1 阻塞式
    例子程序

    public class BIOServer {

      static class Hanlder extendsThread {
        privateSocket socket;

        publicHanlder(Socket socket) {
          this.socket= socket;
        }

        @Override
        public void run(){
        try {
           InputStream in = socket.getInputStream();
           BufferedReader brIn = new BufferedReader(newInputStreamReader(in));
           OutputStream out =socket.getOutputStream();
           out.write(("login: " + new Date() + " ").getBytes());
           while (true) {
           //线程在此阻塞,直到读到客户端新的数据
             String cmd =brIn.readLine();
             System.out.println("receive:" + cmd + " ");
            out.write(("return: " + cmd.toUpperCase() +" ").getBytes());
             if("bye".equalsIgnoreCase(cmd)) {
               out.write(("logout:  " + newDate() + " ").getBytes());
               break;
              }
            }
            socket.close();
          }catch (IOException e) {
            e.printStackTrace();
        }
       }
      }

             publicstatic void main(String[] args) {
             try {
               ServerSocket serverSocket = newServerSocket(7777);
               while (true) {
               //线程在此阻塞,直到收到新的连接
               Socket socket =serverSocket.accept();
               //对每个连接使用一个线程进行处理
               new Hanlder(socket).start();
               }
              } catch(IOException e) {
               e.printStackTrace();
             }
          }
    }


    2.2 非阻塞式
     


  • 相关阅读:
    接口 抽象类 小记
    java 强制转换
    java 多态
    this super 解释
    Java多态性理解
    final与static
    java动态联编
    什么是继承
    JAVA的覆盖、继承和多态的详细解说.this和super的用法
    java继承覆盖总结
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276542.html
Copyright © 2020-2023  润新知