{"id":5090,"date":"2020-08-29T21:23:51","date_gmt":"2020-08-29T13:23:51","guid":{"rendered":"https:\/\/www.xttblog.com\/?p=5090"},"modified":"2020-08-29T21:23:51","modified_gmt":"2020-08-29T13:23:51","slug":"%e9%9d%a2%e8%af%95%e5%bf%85%e4%bc%9a%e7%9a%84io%e3%80%81nio%e3%80%81aio%e3%80%81bio%e4%bb%a5%e5%8f%8a%e5%a4%9a%e8%b7%af%e5%a4%8d%e7%94%a8","status":"publish","type":"post","link":"https:\/\/www.xttblog.com\/?p=5090","title":{"rendered":"\u9762\u8bd5\u5fc5\u4f1a\u7684IO\u3001NIO\u3001AIO\u3001BIO\u4ee5\u53ca\u591a\u8def\u590d\u7528"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u5728\u7f51\u7edc\u7684\u521d\u671f\uff0c\u7f51\u6c11\u5f88\u5c11\uff0c\u670d\u52a1\u5668\u5b8c\u5168\u65e0\u538b\u529b\uff0c\u90a3\u65f6\u7684\u6280\u672f\u4e5f\u6ca1\u6709\u73b0\u5728\u5148\u8fdb\uff0c\u901a\u5e38\u7528\u4e00\u4e2a\u7ebf\u7a0b\u6765\u5168\u7a0b\u8ddf\u8e2a\u5904\u7406\u4e00\u4e2a\u8bf7\u6c42\u3002\u56e0\u4e3a\u8fd9\u6837\u6700\u7b80\u5355\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5176\u5b9e\u4ee3\u7801\u5b9e\u73b0\u5927\u5bb6\u90fd\u77e5\u9053\uff0c\u5c31\u662f\u670d\u52a1\u5668\u4e0a\u6709\u4e2aServerSocket\u5728\u67d0\u4e2a\u7aef\u53e3\u76d1\u542c\uff0c\u63a5\u6536\u5230\u5ba2\u6237\u7aef\u7684\u8fde\u63a5\u540e\uff0c\u4f1a\u521b\u5efa\u4e00\u4e2aSocket\uff0c\u5e76\u628a\u5b83\u4ea4\u7ed9\u4e00\u4e2a\u7ebf\u7a0b\u8fdb\u884c\u540e\u7eed\u5904\u7406\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7ebf\u7a0b\u4e3b\u8981\u4eceSocket\u8bfb\u53d6\u5ba2\u6237\u7aef\u4f20\u8fc7\u6765\u7684\u6570\u636e\uff0c\u7136\u540e\u8fdb\u884c\u4e1a\u52a1\u5904\u7406\uff0c\u5e76\u628a\u7ed3\u679c\u518d\u5199\u5165Socket\u4f20\u56de\u5ba2\u6237\u7aef\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7531\u4e8e\u7f51\u7edc\u7684\u539f\u56e0\uff0cSocket\u521b\u5efa\u540e\u5e76\u4e0d\u4e00\u5b9a\u80fd\u7acb\u523b\u4ece\u5b83\u4e0a\u9762\u8bfb\u53d6\u6570\u636e\uff0c\u53ef\u80fd\u9700\u8981\u7b49\u4e00\u6bb5\u65f6\u95f4\uff0c\u6b64\u65f6\u7ebf\u7a0b\u4e5f\u5fc5\u987b\u4e00\u76f4\u963b\u585e\u7740\u3002\u5728\u5411Socket\u5199\u5165\u6570\u636e\u65f6\uff0c\u4e5f\u53ef\u80fd\u4f1a\u4f7f\u7ebf\u7a0b\u963b\u585e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u91cc\u51c6\u5907\u4e86\u4e00\u4e2a\u793a\u4f8b\uff0c\u4e3b\u8981\u903b\u8f91\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5ba2\u6237\u7aef\uff1a\u521b\u5efa20\u4e2aSocket\u5e76\u8fde\u63a5\u5230\u670d\u52a1\u5668\u4e0a\uff0c\u518d\u521b\u5efa20\u4e2a\u7ebf\u7a0b\uff0c\u6bcf\u4e2a\u7ebf\u7a0b\u8d1f\u8d23\u4e00\u4e2aSocket\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u670d\u52a1\u5668\u7aef\uff1a\u63a5\u6536\u5230\u8fd920\u4e2a\u8fde\u63a5\uff0c\u521b\u5efa20\u4e2aSocket\uff0c\u63a5\u7740\u521b\u5efa20\u4e2a\u7ebf\u7a0b\uff0c\u6bcf\u4e2a\u7ebf\u7a0b\u8d1f\u8d23\u4e00\u4e2aSocket\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e3a\u4e86\u6a21\u62df\u670d\u52a1\u5668\u7aef\u7684Socket\u5728\u521b\u5efa\u540e\u4e0d\u80fd\u7acb\u9a6c\u8bfb\u53d6\u6570\u636e\uff0c\u8ba9\u5ba2\u6237\u7aef\u768420\u4e2a\u7ebf\u7a0b\u5206\u522b\u4f11\u77205-10\u4e4b\u95f4\u7684\u4e00\u4e2a\u968f\u673a\u79d2\u6570\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5ba2\u6237\u7aef\u768420\u4e2a\u7ebf\u7a0b\u4f1a\u5728\u7b2c5\u79d2\u5230\u7b2c10\u79d2\u8fd9\u6bb5\u65f6\u95f4\u5185\u9646\u9646\u7eed\u7eed\u7684\u5411\u670d\u52a1\u5668\u7aef\u53d1\u9001\u6570\u636e\uff0c\u670d\u52a1\u5668\u7aef\u768420\u4e2a\u7ebf\u7a0b\u4e5f\u4f1a\u9646\u9646\u7eed\u7eed\u63a5\u6536\u5230\u6570\u636e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u670d\u52a1\u7aef\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class BioServer {\n\n  static AtomicInteger counter = new AtomicInteger(0);\n  static SimpleDateFormat sdf = new SimpleDateFormat(\"HH:mm:ss\"); \n  \n  public static void main(String[] args) {\n    try {\n      ServerSocket ss = new ServerSocket();\n      ss.bind(new InetSocketAddress(\"localhost\", 8080));\n      while (true) {\n        Socket s = ss.accept();\n        processWithNewThread(s);\n      }\n    } catch (Exception e) {\n      e.printStackTrace();\n    }\n  }\n  \n  static void processWithNewThread(Socket s) {\n    Runnable run = () -&gt; {\n      InetSocketAddress rsa = (InetSocketAddress)s.getRemoteSocketAddress();\n      System.out.println(time() + \"-&gt;\" + rsa.getHostName() + \":\" + rsa.getPort() + \"-&gt;\" + Thread.currentThread().getId() + \":\" + counter.incrementAndGet());\n      try {\n        String result = readBytes(s.getInputStream());\n        System.out.println(time() + \"-&gt;\" + result + \"-&gt;\" + Thread.currentThread().getId() + \":\" + counter.getAndDecrement());\n        s.close();\n      } catch (Exception e) {\n        e.printStackTrace();\n      }\n    };\n    new Thread(run).start();\n  }\n  \n  static String readBytes(InputStream is) throws Exception {\n    long start = 0;\n    int total = 0;\n    int count = 0;\n    byte[] bytes = new byte[1024];\n    \/\/\u5f00\u59cb\u8bfb\u6570\u636e\u7684\u65f6\u95f4\n    long begin = System.currentTimeMillis();\n    while ((count = is.read(bytes)) &gt; -1) {\n      if (start &lt; 1) {\n        \/\/\u7b2c\u4e00\u6b21\u8bfb\u5230\u6570\u636e\u7684\u65f6\u95f4\n        start = System.currentTimeMillis();\n      }\n      total += count;\n    }\n    \/\/\u8bfb\u5b8c\u6570\u636e\u7684\u65f6\u95f4\n    long end = System.currentTimeMillis();\n    return \"wait=\" + (start - begin) + \"ms,read=\" + (end - start) + \"ms,total=\" + total + \"bs\";\n  }\n\n  static String time() {\n    return sdf.format(new Date());\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5ba2\u6237\u7aef\u5b9e\u73b0\u4ee3\u7801\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Client {\n\n  public static void main(String[] args) {\n    try {\n      for (int i = 0; i &lt; 20; i++) {\n        Socket s = new Socket();\n        s.connect(new InetSocketAddress(\"localhost\", 8080));\n        processWithNewThread(s, i);\n      }\n    } catch (IOException e) {\n      e.printStackTrace();\n    }\n  }\n\n  static void processWithNewThread(Socket s, int i) {\n    Runnable run = () -&gt; {\n      try {\n        \/\/\u7761\u7720\u968f\u673a\u76845-10\u79d2\uff0c\u6a21\u62df\u6570\u636e\u5c1a\u672a\u5c31\u7eea\n        Thread.sleep((new Random().nextInt(6) + 5) * 1000);\n        \/\/\u51991M\u6570\u636e\uff0c\u4e3a\u4e86\u62c9\u957f\u670d\u52a1\u5668\u7aef\u8bfb\u6570\u636e\u7684\u8fc7\u7a0b\n        s.getOutputStream().write(prepareBytes());\n        \/\/\u7761\u77201\u79d2\uff0c\u8ba9\u670d\u52a1\u5668\u7aef\u628a\u6570\u636e\u8bfb\u5b8c\n        Thread.sleep(1000);\n        s.close();\n      } catch (Exception e) {\n        e.printStackTrace();\n      }\n    };\n    new Thread(run).start();\n  }\n  \n  static byte[] prepareBytes() {\n    byte[] bytes = new byte[1024*1024*1];\n    for (int i = 0; i &lt; bytes.length; i++) {\n      bytes[i] = 1;\n    }\n    return bytes;\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\u540e\u7684\u6267\u884c\u7ed3\u679c\u5982\u4e0b\u6240\u793a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u65f6\u95f4-&gt;IP:Port-&gt;\u7ebf\u7a0bId:\u5f53\u524d\u7ebf\u7a0b\u6570\n15:11:52-&gt;127.0.0.1:55201-&gt;10:1\n15:11:52-&gt;127.0.0.1:55203-&gt;12:2\n15:11:52-&gt;127.0.0.1:55204-&gt;13:3\n15:11:52-&gt;127.0.0.1:55207-&gt;16:4\n15:11:52-&gt;127.0.0.1:55208-&gt;17:5\n15:11:52-&gt;127.0.0.1:55202-&gt;11:6\n15:11:52-&gt;127.0.0.1:55205-&gt;14:7\n15:11:52-&gt;127.0.0.1:55206-&gt;15:8\n15:11:52-&gt;127.0.0.1:55209-&gt;18:9\n15:11:52-&gt;127.0.0.1:55210-&gt;19:10\n15:11:52-&gt;127.0.0.1:55213-&gt;22:11\n15:11:52-&gt;127.0.0.1:55214-&gt;23:12\n15:11:52-&gt;127.0.0.1:55217-&gt;26:13\n15:11:52-&gt;127.0.0.1:55211-&gt;20:14\n15:11:52-&gt;127.0.0.1:55218-&gt;27:15\n15:11:52-&gt;127.0.0.1:55212-&gt;21:16\n15:11:52-&gt;127.0.0.1:55215-&gt;24:17\n15:11:52-&gt;127.0.0.1:55216-&gt;25:18\n15:11:52-&gt;127.0.0.1:55219-&gt;28:19\n15:11:52-&gt;127.0.0.1:55220-&gt;29:20\n\n\u65f6\u95f4-&gt;\u7b49\u5f85\u6570\u636e\u7684\u65f6\u95f4,\u8bfb\u53d6\u6570\u636e\u7684\u65f6\u95f4,\u603b\u5171\u8bfb\u53d6\u7684\u5b57\u8282\u6570-&gt;\u7ebf\u7a0bId:\u5f53\u524d\u7ebf\u7a0b\u6570\n15:11:58-&gt;wait=5012ms,read=1022ms,total=1048576bs-&gt;17:20\n15:11:58-&gt;wait=5021ms,read=1022ms,total=1048576bs-&gt;13:19\n15:11:58-&gt;wait=5034ms,read=1008ms,total=1048576bs-&gt;11:18\n15:11:58-&gt;wait=5046ms,read=1003ms,total=1048576bs-&gt;12:17\n15:11:58-&gt;wait=5038ms,read=1005ms,total=1048576bs-&gt;23:16\n15:11:58-&gt;wait=5037ms,read=1010ms,total=1048576bs-&gt;22:15\n15:11:59-&gt;wait=6001ms,read=1017ms,total=1048576bs-&gt;15:14\n15:11:59-&gt;wait=6016ms,read=1013ms,total=1048576bs-&gt;27:13\n15:11:59-&gt;wait=6011ms,read=1018ms,total=1048576bs-&gt;24:12\n15:12:00-&gt;wait=7005ms,read=1008ms,total=1048576bs-&gt;20:11\n15:12:00-&gt;wait=6999ms,read=1020ms,total=1048576bs-&gt;14:10\n15:12:00-&gt;wait=7019ms,read=1007ms,total=1048576bs-&gt;26:9\n15:12:00-&gt;wait=7012ms,read=1015ms,total=1048576bs-&gt;21:8\n15:12:00-&gt;wait=7023ms,read=1008ms,total=1048576bs-&gt;25:7\n15:12:01-&gt;wait=7999ms,read=1011ms,total=1048576bs-&gt;18:6\n15:12:02-&gt;wait=9026ms,read=1014ms,total=1048576bs-&gt;10:5\n15:12:02-&gt;wait=9005ms,read=1031ms,total=1048576bs-&gt;19:4\n15:12:03-&gt;wait=10007ms,read=1011ms,total=1048576bs-&gt;16:3\n15:12:03-&gt;wait=10006ms,read=1017ms,total=1048576bs-&gt;29:2\n15:12:03-&gt;wait=10010ms,read=1022ms,total=1048576bs-&gt;28:1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u4ee5\u770b\u5230\u670d\u52a1\u5668\u7aef\u786e\u5b9e\u4e3a\u6bcf\u4e2a\u8fde\u63a5\u521b\u5efa\u4e00\u4e2a\u7ebf\u7a0b\uff0c\u5171\u521b\u5efa\u4e8620\u4e2a\u7ebf\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5ba2\u6237\u7aef\u8fdb\u5165\u4f11\u7720\u7ea65-10\u79d2\uff0c\u6a21\u62df\u8fde\u63a5\u4e0a\u6570\u636e\u4e0d\u5c31\u7eea\uff0c\u670d\u52a1\u5668\u7aef\u7ebf\u7a0b\u5728\u7b49\u5f85\uff0c\u7b49\u5f85\u65f6\u95f4\u7ea65-10\u79d2\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5ba2\u6237\u7aef\u9646\u7eed\u7ed3\u675f\u4f11\u7720\uff0c\u5f80\u8fde\u63a5\u4e0a\u5199\u51651M\u6570\u636e\uff0c\u670d\u52a1\u5668\u7aef\u5f00\u59cb\u8bfb\u53d6\u6570\u636e\uff0c\u6574\u4e2a\u8bfb\u53d6\u8fc7\u7a0b\u7ea61\u79d2\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u4ee5\u770b\u5230\uff0c\u670d\u52a1\u5668\u7aef\u7684\u5de5\u4f5c\u7ebf\u7a0b\u4f1a\u628a\u65f6\u95f4\u82b1\u5728\u201c\u7b49\u5f85\u6570\u636e\u201d\u548c\u201c\u8bfb\u53d6\u6570\u636e\u201d\u8fd9\u4e24\u4e2a\u8fc7\u7a0b\u4e0a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6709\u4e24\u4e2a\u4e0d\u597d\u7684\u5730\u65b9\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u662f\u6709\u5f88\u591a\u5ba2\u6237\u7aef\u540c\u65f6\u53d1\u8d77\u8bf7\u6c42\u7684\u8bdd\uff0c\u670d\u52a1\u5668\u7aef\u8981\u521b\u5efa\u5f88\u591a\u7684\u7ebf\u7a0b\uff0c\u53ef\u80fd\u4f1a\u56e0\u4e3a\u8d85\u8fc7\u4e86\u4e0a\u9650\u800c\u9020\u6210\u5d29\u6e83\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e8c\u662f\u6bcf\u4e2a\u7ebf\u7a0b\u7684\u5927\u90e8\u5206\u65f6\u5149\u4e2d\u90fd\u662f\u5728\u963b\u585e\u7740\uff0c\u65e0\u4e8b\u53ef\u5e72\uff0c\u9020\u6210\u6781\u5927\u7684\u8d44\u6e90\u6d6a\u8d39\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f00\u5934\u5df2\u7ecf\u8bf4\u4e86\u90a3\u4e2a\u5e74\u4ee3\u7f51\u6c11\u5f88\u5c11\uff0c\u6240\u4ee5\uff0c\u4e0d\u53ef\u80fd\u4f1a\u6709\u5927\u91cf\u8bf7\u6c42\u540c\u65f6\u8fc7\u6765\u3002\u81f3\u4e8e\u8d44\u6e90\u6d6a\u8d39\u5c31\u6d6a\u8d39\u5427\uff0c\u53cd\u6b63\u95f2\u7740\u4e5f\u662f\u95f2\u7740\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6765\u4e2a\u7b80\u5355\u7684\u5c0f\u4f8b\u5b50\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u996d\u5e97\u5171\u670910\u5f20\u684c\u5b50\uff0c\u4e14\u914d\u5907\u4e8610\u4f4d\u670d\u52a1\u5458\u3002\u53ea\u8981\u6709\u5ba2\u4eba\u6765\u4e86\uff0c\u5927\u5802\u7ecf\u7406\u5c31\u628a\u5ba2\u4eba\u5e26\u5230\u4e00\u5f20\u684c\u5b50\uff0c\u5e76\u5b89\u6392\u4e00\u4f4d\u670d\u52a1\u5458\u5168\u7a0b\u966a\u540c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5373\u4f7f\u5ba2\u4eba\u6682\u65f6\u4e0d\u9700\u8981\u670d\u52a1\uff0c\u670d\u52a1\u5458\u4e5f\u4e00\u76f4\u5728\u65c1\u8fb9\u7ad9\u7740\u3002\u53ef\u80fd\u89c9\u7740\u662f\u4e00\u79cd\u6d6a\u8d39\uff0c\u5176\u5b9e\u975e\u4e5f\uff0c\u8fd9\u5c31\u662f\u5c0a\u8d35\u7684VIP\u670d\u52a1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5176\u5b9e\uff0cVIP\u6620\u5c04\u7684\u662f\u4e00\u5bf9\u4e00\u7684\u6a21\u578b\uff0c\u4e3b\u8981\u4f53\u73b0\u5728\u201c\u4e13\u7528\u201d\u4e0a\u6216\u201c\u79c1\u6709\u201d\u4e0a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u771f\u6b63\u7684\u591a\u8def\u590d\u7528\u6280\u672f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u591a\u8def\u590d\u7528\u6280\u672f\u539f\u672c\u6307\u7684\u662f\uff0c\u5728\u901a\u4fe1\u65b9\u9762\uff0c\u591a\u79cd\u4fe1\u53f7\u6216\u6570\u636e\uff08\u4ece\u5b8f\u89c2\u4e0a\u770b\uff09\u4ea4\u7ec7\u5728\u4e00\u8d77\uff0c\u4f7f\u7528\u540c\u4e00\u6761\u4f20\u8f93\u901a\u9053\u8fdb\u884c\u4f20\u8f93\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\u505a\u7684\u76ee\u7684\uff0c\u4e00\u65b9\u9762\u53ef\u4ee5\u5145\u5206\u5229\u7528\u901a\u9053\u7684\u4f20\u8f93\u80fd\u529b\uff0c\u53e6\u4e00\u65b9\u9762\u81ea\u7136\u662f\u7701\u65f6\u7701\u529b\u7701\u94b1\u5566\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5176\u5b9e\u8fd9\u4e2a\u6982\u5ff5\u975e\u5e38\u7684\u201c\u751f\u6d3b\u5316\u201d\uff0c\u968f\u624b\u5c31\u53ef\u4ee5\u4e3e\u4e2a\u4f8b\u5b50\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u6761\u5c0f\u6c34\u6e20\u91cc\u6c34\u5728\u6d41\uff0c\u5728\u4e00\u7aef\u5f80\u91cc\u5012\u5165\u5927\u91cf\u4e52\u4e53\u7403\uff0c\u5728\u53e6\u4e00\u7aef\u7528\u7f51\u8fdb\u884c\u8fc7\u6ee4\uff0c\u628a\u4e52\u4e53\u7403\u548c\u6c34\u6d41\u5206\u5f00\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u5c31\u662f\u4e00\u4e2a\u6bd4\u8f83\u201c\u571f\u201d\u7684\u591a\u8def\u590d\u7528\uff0c\u9996\u5148\u5728\u53d1\u5c04\u7aef\u628a\u591a\u79cd\u4fe1\u53f7\u6216\u6570\u636e\u8fdb\u884c\u201c\u6df7\u5408\u201d\uff0c\u63a5\u7740\u662f\u5728\u901a\u9053\u4e0a\u8fdb\u884c\u4f20\u8f93\uff0c\u6700\u540e\u5728\u63a5\u6536\u7aef\u201c\u5206\u79bb\u201d\u51fa\u81ea\u5df1\u9700\u8981\u7684\u4fe1\u53f7\u6216\u6570\u636e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u4fe1\u5927\u5bb6\u90fd\u770b\u51fa\u6765\u4e86\uff0c\u8fd9\u91cc\u7684\u91cd\u70b9\u5176\u5b9e\u5c31\u662f\u5904\u7406\u597d\u201c\u6df7\u5408\u201d\u548c\u201c\u5206\u79bb\u201d\uff0c\u5bf9\u4e8e\u4e0d\u540c\u7684\u4fe1\u53f7\u6216\u6570\u636e\uff0c\u6709\u4e0d\u540c\u7684\u5904\u7406\u65b9\u6cd5\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6bd4\u5982\u4ee5\u524d\u7684\u6709\u7ebf\u7535\u89c6\u662f\u6a21\u62df\u4fe1\u53f7\uff0c\u5373\u7535\u78c1\u6ce2\u3002\u4e00\u5bb6\u4e00\u822c\u53ea\u6709\u4e00\u6839\u4fe1\u53f7\u7ebf\uff0c\u4f46\u53ef\u4ee5\u540c\u65f6\u63a5\u591a\u4e2a\u7535\u89c6\uff0c\u6bcf\u4e2a\u7535\u89c6\u4efb\u610f\u6362\u53f0\uff0c\u4e92\u4e0d\u5f71\u54cd\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u662f\u7531\u4e8e\u4e0d\u540c\u9891\u7387\u7684\u6ce2\u53ef\u4ee5\u6df7\u5408\u548c\u5206\u79bb\u3002\uff08\u5f53\u7136\uff0c\u53ef\u80fd\u4e0d\u662f\u5341\u5206\u51c6\u786e\uff0c\u660e\u767d\u610f\u601d\u5c31\u884c\u4e86\u3002\uff09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u6bd4\u5982\u57ce\u5e02\u7684\u9ad8\u94c1\u7ad9\u4e00\u822c\u90fd\u6709\u6570\u4e2a\u7ad9\u53f0\u4f9b\u9ad8\u94c1\uff08\u540c\u65f6\uff09\u505c\u9760\uff0c\u4f46\u57ce\u5e02\u95f4\u7684\u9ad8\u94c1\u8f68\u9053\u5355\u65b9\u5411\u53ea\u6709\u4e00\u6761\uff0c\u5982\u4f55\u4fdd\u8bc1\u90a3\u4e48\u591a\u8d9f\u9ad8\u94c1\u5b89\u5168\u8fd0\u884c\u5462\uff1f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f88\u660e\u663e\u662f\u5206\u65f6\u4f7f\u7528\uff0c\u6bcf\u8d9f\u9ad8\u94c1\u90fd\u6709\u81ea\u5df1\u7684\u65f6\u523b\u3002\u591a\u8d9f\u9ad8\u94c1\u6309\u4e0d\u540c\u7684\u65f6\u523b\u51fa\u7ad9\u76f8\u5f53\u4e8e\u6df7\u5408\uff0c\u6309\u4e0d\u540c\u7684\u65f6\u523b\u8fdb\u7ad9\u76f8\u5f53\u4e8e\u5206\u79bb\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u603b\u7ed3\u4e00\u4e0b\uff0c\u591a\u8def\u6307\u7684\u662f\u591a\u79cd\u4e0d\u540c\u7684\u4fe1\u53f7\u6216\u6570\u636e\u6216\u5176\u5b83\u4e8b\u7269\uff0c\u590d\u7528\u6307\u7684\u662f\u5171\u7528\u540c\u4e00\u4e2a\u7269\u7406\u94fe\u8def\u6216\u901a\u9053\u6216\u8f7d\u4f53\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u89c1\uff0c\u591a\u8def\u590d\u7528\u6280\u672f\u662f\u4e00\u79cd\u4e00\u5bf9\u591a\u7684\u6a21\u578b\uff0c\u201c\u591a\u201d\u7684\u8fd9\u4e00\u65b9\u590d\u7528\u4e86\u201c\u4e00\u201d\u7684\u8fd9\u4e00\u65b9\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5176\u5b9e\uff0c\u4e00\u5bf9\u591a\u7684\u6a21\u578b\u4e3b\u8981\u4f53\u73b0\u5728\u201c\u516c\u7528\u201d\u4e0a\u6216\u201c\u5171\u4eab\u201d\u4e0a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u60a8\u5148\u770b\u7740\uff0c\u6211\u4e00\u4f1a\u518d\u8fc7\u6765<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u5bf9\u4e00\u670d\u52a1\u662f\u5178\u578b\u7684\u6709\u94b1\u4efb\u6027\uff0c\u867d\u7136\u54cd\u5e94\u53ca\u65f6\u3001\u670d\u52a1\u5468\u5230\uff0c\u4f46\u4e0d\u662f\u6bcf\u4e2a\u4eba\u90fd\u80fd\u4eab\u53d7\u7684\uff0c\u6bd5\u7adf\u8fd8\u662f\u201c\u5c4c\u4e1d\u201d\u591a\u561b\uff0c\u90a3\u5c31\u6765\u4e2a\u5171\u4eab\u670d\u52a1\u5427\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u4ee5\u5b9e\u9645\u5f53\u4e2d\u66f4\u591a\u7684\u60c5\u51b5\u662f\uff0c\u5ba2\u4eba\u5750\u4e0b\u540e\uff0c\u4f1a\u7ed9\u4ed6\u4e00\u4e2a\u83dc\u5355\uff0c\u8ba9\u4ed6\u5148\u770b\u7740\uff0c\u53cd\u6b63\u4e5f\u4e0d\u53ef\u80fd\u7acb\u9a6c\u70b9\u9910\uff0c\u670d\u52a1\u5458\u5c31\u53bb\u5fd9\u522b\u7684\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u80fd\u4e0d\u65f6\u7684\u4f1a\u6709\u670d\u52a1\u5458\u4ece\u5ba2\u4eba\u8eab\u65c1\u7ecf\u8fc7\uff0c\u53d1\u73b0\u5ba2\u4eba\u8fd8\u6ca1\u6709\u70b9\u9910\uff0c\u5c31\u4f1a\u4e3b\u52a8\u53bb\u8be2\u95ee\u73b0\u5728\u9700\u8981\u70b9\u9910\u5417\uff1f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u9700\u8981\uff0c\u670d\u52a1\u5458\u5c31\u7ed9\u4f60\u5199\u83dc\u5355\uff0c\u5982\u679c\u4e0d\u9700\u8981\uff0c\u670d\u52a1\u5458\u5c31\u7ee7\u7eed\u5f80\u524d\u8d70\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u79cd\u60c5\u51b5\u996d\u5e97\u6574\u4f53\u8fd0\u884c\u7684\u4e5f\u5f88\u597d\uff0c\u4f46\u662f\u670d\u52a1\u5458\u4eba\u6570\u5c11\u591a\u4e86\u3002\u73b0\u5728\u670d\u52a110\u684c\u5ba2\u4eba\uff0c4\u4e2a\u670d\u52a1\u5458\u7ef0\u7ef0\u6709\u4f59\u3002\uff08\u8fd9\u8282\u7701\u7684\u53ef\u90fd\u662f\u7eaf\u5229\u6da6\u5440\u3002)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a10\u684c\u5ba2\u4eba\u540c\u65f6\u9700\u8981\u670d\u52a1\u7684\u60c5\u51b5\u51e0\u4e4e\u662f\u4e0d\u4f1a\u53d1\u751f\u7684\uff0c\u7edd\u5927\u90e8\u5206\u60c5\u51b5\u90fd\u662f\u9519\u5f00\u7684\u3002\u5982\u679c\u771f\u6709\u7684\u8bdd\uff0c\u90a3\u5c31\u7b49\u4f1a\u597d\u4e86\uff0c\u53c8\u4e0d\u662f120\/119\uff0c\u4eba\u547d\u5173\u5929\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56de\u5230\u4ee3\u7801\u91cc\uff0c\u60c5\u51b5\u4e0e\u4e4b\u975e\u5e38\u76f8\u4f3c\uff0c\u5b8c\u5168\u53ef\u4ee5\u91c7\u7528\u76f8\u540c\u7684\u7406\u8bba\u53bb\u5904\u7406\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fde\u63a5\u5efa\u7acb\u540e\uff0c\u627e\u4e2a\u5730\u65b9\u628a\u5b83\u653e\u5230\u90a3\u91cc\uff0c\u53ef\u4ee5\u6682\u65f6\u5148\u4e0d\u7ba1\u5b83\uff0c\u53cd\u6b63\u6b64\u65f6\u4e5f\u6ca1\u6709\u6570\u636e\u53ef\u8bfb\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f46\u662f\u6570\u636e\u65e9\u665a\u4f1a\u5230\u6765\u7684\uff0c\u6240\u4ee5\uff0c\u8981\u4e0d\u65f6\u7684\u53bb\u8be2\u95ee\u6bcf\u4e2a\u8fde\u63a5\u6709\u6570\u636e\u6ca1\u6709\uff0c\u6709\u7684\u8bdd\u5c31\u8bfb\u53d6\u6570\u636e\uff0c\u6ca1\u6709\u7684\u8bdd\u5c31\u7ee7\u7eed\u4e0d\u7ba1\u5b83\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5176\u5b9e\u8fd9\u4e2a\u6a21\u5f0f\u5728Java\u91cc\u65e9\u5c31\u6709\u4e86\uff0c\u5c31\u662fJava NIO\uff0c\u8fd9\u91cc\u7684\u5927\u5199\u5b57\u6bcd\u201cN\u201d\u662f\u5355\u8bcd\u201cNew\u201d\uff0c\u5373\u201c\u65b0\u201d\u7684\u610f\u601d\uff0c\u4e3b\u8981\u662f\u4e3a\u4e86\u548c\u4e0a\u9762\u7684\u201c\u4e00\u5bf9\u4e00\u201d\u8fdb\u884c\u533a\u5206\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5148\u94fa\u57ab\u4e00\u4e0b\u5427<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u73b0\u5728\u9700\u8981\u628aSocket\u4ea4\u4e92\u7684\u8fc7\u7a0b\u518d\u7a0d\u5fae\u7ec6\u5316\u4e00\u4e9b\u3002\u5ba2\u6237\u7aef\u5148\u8bf7\u6c42\u8fde\u63a5\uff0cconnect\uff0c\u670d\u52a1\u5668\u7aef\u7136\u540e\u63a5\u53d7\u8fde\u63a5\uff0caccept\uff0c\u7136\u540e\u5ba2\u6237\u7aef\u518d\u5411\u8fde\u63a5\u5199\u5165\u6570\u636e\uff0cwrite\uff0c\u63a5\u7740\u670d\u52a1\u5668\u7aef\u4ece\u8fde\u63a5\u4e0a\u8bfb\u51fa\u6570\u636e\uff0cread\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u548c\u6253\u7535\u8bdd\u7684\u573a\u666f\u4e00\u6837\uff0c\u4e3b\u53eb\u62e8\u53f7\uff0cconnect\uff0c\u88ab\u53eb\u63a5\u542c\uff0caccept\uff0c\u4e3b\u53eb\u8bf4\u8bdd\uff0cspeak\uff0c\u88ab\u53eb\u8046\u542c\uff0clisten\u3002\u4e3b\u53eb\u7ed9\u88ab\u53eb\u6253\u7535\u8bdd\uff0c\u8bf4\u660e\u4e3b\u53eb\u627e\u88ab\u53eb\u6709\u4e8b\uff0c\u6240\u4ee5\u88ab\u53eb\u5173\u6ce8\u7684\u662f\u63a5\u901a\u7535\u8bdd\uff0c\u542c\u5bf9\u65b9\u8bf4\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5ba2\u6237\u7aef\u4e3b\u52a8\u5411\u670d\u52a1\u5668\u7aef\u53d1\u8d77\u8bf7\u6c42\uff0c\u8bf4\u660e\u5ba2\u6237\u7aef\u627e\u670d\u52a1\u5668\u7aef\u6709\u4e8b\uff0c\u6240\u4ee5\u670d\u52a1\u5668\u7aef\u5173\u6ce8\u7684\u662f\u63a5\u53d7\u8bf7\u6c42\uff0c\u8bfb\u53d6\u5bf9\u65b9\u4f20\u6765\u7684\u6570\u636e\u3002\u8fd9\u91cc\u628a\u63a5\u53d7\u8bf7\u6c42\uff0c\u8bfb\u53d6\u6570\u636e\u79f0\u4e3a\u670d\u52a1\u5668\u7aef\u611f\u5174\u8da3\u7684\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728Java NIO\u4e2d\uff0c\u63a5\u53d7\u8bf7\u6c42\u7684\u64cd\u4f5c\uff0c\u7528OP_ACCEPT\u8868\u793a\uff0c\u8bfb\u53d6\u6570\u636e\u7684\u64cd\u4f5c\uff0c\u7528OP_READ\u8868\u793a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6211\u51b3\u5b9a\u5148\u8fc7\u4e00\u904d\u996d\u5e97\u7684\u573a\u666f\uff0c\u8ba9\u9996\u6b21\u63a5\u89e6Java NIO\u7684\u540c\u5b66\u4e0d\u90a3\u4e48\u8ff7\u832b\u3002\u5c31\u662f\u628a\u5e38\u89c4\u7684\u573a\u666f\u8fdb\u884c\u4e86\u5b9a\u5411\u6574\u7406\uff0c\u7a0d\u5fae\u6709\u70b9\u523b\u610f\uff0c\u660e\u767d\u610f\u601d\u5c31\u884c\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u4e13\u95e8\u8bbe\u7acb\u4e00\u4e2a\u201c\u8dd1\u817f\u201d\u670d\u52a1\u5458\uff0c\u5de5\u4f5c\u804c\u8d23\u5355\u4e00\uff0c\u5c31\u662f\u95ee\u95ee\u5ba2\u4eba\u662f\u5426\u9700\u8981\u670d\u52a1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u7ad9\u5728\u95e8\u53e3\u63a5\u5f85\u5ba2\u4eba\uff0c\u672c\u6765\u662f\u5927\u5802\u7ecf\u7406\u7684\u5de5\u4f5c\uff0c\u4f46\u662f\u4ed6\u4e0d\u613f\u610f\u5728\u95e8\u53e3\u76ef\u7740\uff0c\u4e8e\u662f\u5c31\u59d4\u6258\u7ed9\u8dd1\u817f\u670d\u52a1\u5458\uff0c\u4f60\u5e2e\u6211\u76ef\u7740\uff0c\u6709\u4eba\u6765\u4e86\u544a\u8bc9\u6211\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e8e\u662f\u8dd1\u817f\u670d\u52a1\u5458\u5c31\u6709\u4e86\u4e00\u4e2a\u4efb\u52a1\uff0c\u66ff\u5927\u5802\u7ecf\u7406\u76ef\u68a2\u3002\u7ec8\u4e8e\u6765\u5ba2\u4eba\u4e86\uff0c\u8dd1\u817f\u670d\u52a1\u5458\u8d76\u7d27\u544a\u8bc9\u4e86\u5927\u5802\u7ecf\u7406\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u5927\u5802\u7ecf\u7406\u628a\u5ba2\u4eba\u5e26\u5230\u5ea7\u4f4d\u4e0a\uff0c\u5bf9\u8dd1\u817f\u670d\u52a1\u5458\u8bf4\uff0c\u5ba2\u4eba\u63a5\u4e0b\u6765\u80af\u5b9a\u662f\u8981\u70b9\u9910\u7684\uff0c\u4f46\u662f\u73b0\u5728\u5728\u770b\u83dc\u5355\uff0c\u4e0d\u77e5\u9053\u4ec0\u4e48\u65f6\u5019\u80fd\u770b\u597d\uff0c\u6240\u4ee5\u4f60\u4e0d\u65f6\u7684\u8fc7\u6765\u95ee\u95ee\uff0c\u770b\u9700\u4e0d\u9700\u8981\u70b9\u9910\uff0c\u9700\u8981\u7684\u8bdd\u5c31\u518d\u558a\u6765\u4e00\u4e2a\u201c\u70b9\u9910\u201d\u670d\u52a1\u5458\u7ed9\u5ba2\u4eba\u5199\u83dc\u5355\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e8e\u662f\u8dd1\u817f\u670d\u52a1\u5458\u5c31\u53c8\u591a\u4e86\u4e00\u4e2a\u4efb\u52a1\uff0c\u5c31\u662f\u76ef\u7740\u8fd9\u684c\u5ba2\u4eba\uff0c\u4e0d\u65f6\u6765\u95ee\u95ee\uff0c\u5982\u679c\u9700\u8981\u670d\u52a1\u7684\u8bdd\uff0c\u5c31\u53eb\u70b9\u9910\u670d\u52a1\u5458\u8fc7\u6765\u670d\u52a1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001\u8dd1\u817f\u670d\u52a1\u5458\u5728\u67d0\u6b21\u8be2\u95ee\u4e2d\uff0c\u5ba2\u4eba\u7ec8\u4e8e\u51b3\u5b9a\u70b9\u9910\u4e86\uff0c\u8dd1\u9898\u670d\u52a1\u5458\u8d76\u7d27\u627e\u6765\u4e00\u4e2a\u70b9\u9910\u670d\u52a1\u5458\u4e3a\u5ba2\u4eba\u5199\u83dc\u5355\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">5\u3001\u5c31\u8fd9\u6837\uff0c\u8dd1\u817f\u670d\u52a1\u5458\u65e2\u8981\u76ef\u7740\u95e8\u5916\u65b0\u8fc7\u6765\u7684\u5ba2\u4eba\uff0c\u4e5f\u8981\u76ef\u7740\u95e8\u5185\u5df2\u7ecf\u5c31\u5750\u7684\u5ba2\u4eba\u3002\u65b0\u5ba2\u4eba\u6765\u4e86\uff0c\u901a\u77e5\u5927\u5802\u7ecf\u7406\u53bb\u63a5\u5f85\u3002\u5c31\u5750\u7684\u5ba2\u4eba\u51b3\u5b9a\u70b9\u9910\u4e86\uff0c\u901a\u77e5\u70b9\u9910\u670d\u52a1\u5458\u53bb\u5199\u83dc\u5355\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e8b\u60c5\u5c31\u8fd9\u6837\u4e00\u76f4\u5faa\u73af\u7684\u6301\u7eed\u4e0b\u53bb\uff0c\u4e00\u5207\uff0c\u90fd\u633a\u597d\u3002\u89d2\u8272\u660e\u786e\uff0c\u804c\u8d23\u5355\u4e00\uff0c\u914d\u5408\u5f88\u597d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5927\u5802\u7ecf\u7406\u548c\u70b9\u9910\u670d\u52a1\u5458\u662f\u9700\u6c42\u7684\u63d0\u4f9b\u8005\u6216\u5b9e\u73b0\u8005\uff0c\u8dd1\u817f\u670d\u52a1\u5458\u662f\u9700\u6c42\u7684\u53d1\u73b0\u8005\uff0c\u5e76\u8bc6\u522b\u51fa\u9700\u6c42\u7684\u79cd\u7c7b\uff0c\u9700\u8981\u63a5\u5f85\u7684\u4ea4\u7ed9\u5927\u5802\u7ecf\u7406\uff0c\u9700\u8981\u70b9\u9910\u7684\u4ea4\u7ed9\u70b9\u9910\u670d\u52a1\u5458\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u54c8\u54c8\uff0cJava NIO\u6765\u5566<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee3\u7801\u7684\u5199\u6cd5\u975e\u5e38\u7684\u56fa\u5b9a\uff0c\u53ef\u4ee5\u914d\u5408\u7740\u540e\u9762\u7684\u89e3\u8bf4\u6765\u770b\uff0c\u8fd9\u6837\u5c31\u597d\u7406\u89e3\u4e86\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class NioServer {\n\n  static int clientCount = 0;\n  static AtomicInteger counter = new AtomicInteger(0);\n  static SimpleDateFormat sdf = new SimpleDateFormat(\"HH:mm:ss\"); \n  \n  public static void main(String[] args) {\n    try {\n      Selector selector = Selector.open();\n      ServerSocketChannel ssc = ServerSocketChannel.open();\n      ssc.configureBlocking(false);\n      ssc.register(selector, SelectionKey.OP_ACCEPT);\n      ssc.bind(new InetSocketAddress(\"localhost\", 8080));\n      while (true) {\n        selector.select();\n        Set&lt;SelectionKey&gt; keys = selector.selectedKeys();\n        Iterator&lt;SelectionKey&gt; iterator = keys.iterator();\n        while (iterator.hasNext()) {\n          SelectionKey key = iterator.next();\n          iterator.remove();\n          if (key.isAcceptable()) {\n            ServerSocketChannel ssc1 = (ServerSocketChannel)key.channel();\n            SocketChannel sc = null;\n            while ((sc = ssc1.accept()) != null) {\n              sc.configureBlocking(false);\n              sc.register(selector, SelectionKey.OP_READ);\n              InetSocketAddress rsa = (InetSocketAddress)sc.socket().getRemoteSocketAddress();\n              System.out.println(time() + \"-&gt;\" + rsa.getHostName() + \":\" + rsa.getPort() + \"-&gt;\" + Thread.currentThread().getId() + \":\" + (++clientCount));\n            }\n          } else if (key.isReadable()) {\n            \/\/\u5148\u5c06\u201c\u8bfb\u201d\u4ece\u611f\u5174\u8da3\u64cd\u4f5c\u79fb\u51fa\uff0c\u5f85\u628a\u6570\u636e\u4ece\u901a\u9053\u4e2d\u8bfb\u5b8c\u540e\uff0c\u518d\u628a\u201c\u8bfb\u201d\u6dfb\u52a0\u5230\u611f\u5174\u8da3\u64cd\u4f5c\u4e2d\n            \/\/\u5426\u5219\uff0c\u8be5\u901a\u9053\u4f1a\u4e00\u76f4\u88ab\u9009\u51fa\u6765\n            key.interestOps(key.interestOps() &amp; (~ SelectionKey.OP_READ));\n            processWithNewThread((SocketChannel)key.channel(), key);\n          }\n        }\n      }\n    } catch (Exception e) {\n      e.printStackTrace();\n    }\n  }\n\n  static void processWithNewThread(SocketChannel sc, SelectionKey key) {\n    Runnable run = () -&gt; {\n      counter.incrementAndGet();\n      try {\n        String result = readBytes(sc);\n        \/\/\u628a\u201c\u8bfb\u201d\u52a0\u8fdb\u53bb\n        key.interestOps(key.interestOps() | SelectionKey.OP_READ);\n        System.out.println(time() + \"-&gt;\" + result + \"-&gt;\" + Thread.currentThread().getId() + \":\" + counter.get());\n        sc.close();\n      } catch (Exception e) {\n        e.printStackTrace();\n      }\n      counter.decrementAndGet();\n    };\n    new Thread(run).start();\n  }\n  \n  static String readBytes(SocketChannel sc) throws Exception {\n    long start = 0;\n    int total = 0;\n    int count = 0;\n    ByteBuffer bb = ByteBuffer.allocate(1024);\n    \/\/\u5f00\u59cb\u8bfb\u6570\u636e\u7684\u65f6\u95f4\n    long begin = System.currentTimeMillis();\n    while ((count = sc.read(bb)) &gt; -1) {\n      if (start &lt; 1) {\n        \/\/\u7b2c\u4e00\u6b21\u8bfb\u5230\u6570\u636e\u7684\u65f6\u95f4\n        start = System.currentTimeMillis();\n      }\n      total += count;\n      bb.clear();\n    }\n    \/\/\u8bfb\u5b8c\u6570\u636e\u7684\u65f6\u95f4\n    long end = System.currentTimeMillis();\n    return \"wait=\" + (start - begin) + \"ms,read=\" + (end - start) + \"ms,total=\" + total + \"bs\";\n  }\n  \n  static String time() {\n    return sdf.format(new Date());\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u7684\u5927\u81f4\u5904\u7406\u8fc7\u7a0b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u5b9a\u4e49\u4e00\u4e2a\u9009\u62e9\u5668\uff0cSelector\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5f53\u4e8e\u8bbe\u7acb\u4e00\u4e2a\u8dd1\u817f\u670d\u52a1\u5458\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u5b9a\u4e49\u4e00\u4e2a\u670d\u52a1\u5668\u7aef\u5957\u63a5\u5b57\u901a\u9053\uff0cServerSocketChannel\uff0c\u5e76\u914d\u7f6e\u4e3a\u975e\u963b\u585e\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u7b49\u4e8e\u8058\u8bf7\u4e86\u4e00\u4f4d\u5927\u5802\u7ecf\u7406\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u5c06\u5957\u63a5\u5b57\u901a\u9053\u6ce8\u518c\u5230\u9009\u62e9\u5668\u4e0a\uff0c\u5e76\u628a\u611f\u5174\u8da3\u7684\u64cd\u4f5c\u8bbe\u7f6e\u4e3aOP_ACCEPT\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5f53\u4e8e\u5927\u5802\u7ecf\u7406\u7ed9\u8dd1\u817f\u670d\u52a1\u5458\u8bf4\uff0c\u5e2e\u6211\u76ef\u7740\u95e8\u5916\uff0c\u6709\u5ba2\u4eba\u6765\u4e86\u544a\u8bc9\u6211\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001\u8fdb\u5165\u6b7b\u5faa\u73af\uff0c\u9009\u62e9\u5668\u4e0d\u65f6\u7684\u8fdb\u884c\u9009\u62e9\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5f53\u4e8e\u8dd1\u817f\u670d\u52a1\u5458\u4e00\u904d\u53c8\u4e00\u904d\u7684\u53bb\u8be2\u95ee\u3001\u53bb\u8f6c\u60a0\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">5\u3001\u9009\u62e9\u5668\u7ec8\u4e8e\u9009\u62e9\u51fa\u4e86\u901a\u9053\uff0c\u53d1\u73b0\u901a\u9053\u662f\u9700\u8981Acceptable\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5f53\u4e8e\u8dd1\u817f\u670d\u52a1\u5458\u7ec8\u4e8e\u53d1\u73b0\u95e8\u5916\u6765\u5ba2\u4eba\u4e86\uff0c\u5ba2\u4eba\u662f\u9700\u8981\u63a5\u5f85\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">6\u3001\u4e8e\u662f\u670d\u52a1\u5668\u7aef\u5957\u63a5\u5b57\u63a5\u53d7\u4e86\u8fd9\u4e2a\u901a\u9053\uff0c\u5f00\u59cb\u5904\u7406\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5f53\u4e8e\u8dd1\u817f\u670d\u52a1\u5458\u628a\u5927\u5802\u7ecf\u7406\u53eb\u6765\u4e86\uff0c\u5927\u5802\u7ecf\u7406\u5f00\u59cb\u7740\u624b\u63a5\u5f85\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">7\u3001\u628a\u65b0\u63a5\u53d7\u7684\u901a\u9053\u914d\u7f6e\u4e3a\u975e\u963b\u585e\u7684\uff0c\u5e76\u628a\u5b83\u4e5f\u6ce8\u518c\u5230\u4e86\u9009\u62e9\u5668\u4e0a\uff0c\u8be5\u901a\u9053\u611f\u5174\u8da3\u7684\u64cd\u4f5c\u4e3aOP_READ\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5f53\u4e8e\u5927\u5802\u7ecf\u7406\u628a\u5ba2\u4eba\u5e26\u5230\u5ea7\u4f4d\u4e0a\uff0c\u7ed9\u4e86\u5ba2\u4eba\u83dc\u5355\uff0c\u5e76\u53c8\u628a\u5ba2\u4eba\u59d4\u6258\u7ed9\u8dd1\u817f\u670d\u52a1\u5458\uff0c\u8bf4\u5ba2\u4eba\u63a5\u4e0b\u6765\u80af\u5b9a\u662f\u8981\u70b9\u9910\u7684\uff0c\u4f60\u4e0d\u65f6\u7684\u6765\u95ee\u95ee\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">8\u3001\u9009\u62e9\u5668\u7ee7\u7eed\u4e0d\u65f6\u7684\u8fdb\u884c\u9009\u62e9\u7740\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5f53\u4e8e\u8dd1\u817f\u670d\u52a1\u5458\u7ee7\u7eed\u4e0d\u65f6\u7684\u8be2\u95ee\u7740\u3001\u8f6c\u60a0\u7740\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">9\u3001\u9009\u62e9\u5668\u7ec8\u4e8e\u53c8\u9009\u62e9\u51fa\u4e86\u901a\u9053\uff0c\u8fd9\u6b21\u53d1\u73b0\u901a\u9053\u662f\u9700\u8981Readable\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5f53\u4e8e\u8dd1\u817f\u670d\u52a1\u5458\u7ec8\u4e8e\u53d1\u73b0\u4e86\u4e00\u684c\u5ba2\u4eba\u6709\u4e86\u9700\u6c42\uff0c\u662f\u9700\u8981\u70b9\u9910\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">10\u3001\u628a\u8fd9\u4e2a\u901a\u9053\u4ea4\u7ed9\u4e86\u4e00\u4e2a\u65b0\u7684\u5de5\u4f5c\u7ebf\u7a0b\u53bb\u5904\u7406\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5f53\u4e8e\u8dd1\u817f\u670d\u52a1\u5458\u53eb\u6765\u4e86\u70b9\u9910\u670d\u52a1\u5458\uff0c\u70b9\u9910\u670d\u52a1\u5458\u5f00\u59cb\u4e3a\u5ba2\u4eba\u5199\u83dc\u5355\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">11\u3001\u8fd9\u4e2a\u5de5\u4f5c\u7ebf\u7a0b\u5904\u7406\u5b8c\u540e\uff0c\u5c31\u88ab\u56de\u6536\u4e86\uff0c\u53ef\u4ee5\u518d\u53bb\u5904\u7406\u5176\u5b83\u901a\u9053\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5f53\u4e8e\u70b9\u9910\u670d\u52a1\u5458\u5199\u597d\u83dc\u5355\u540e\uff0c\u5c31\u8d70\u4e86\uff0c\u53ef\u4ee5\u518d\u53bb\u4e3a\u5176\u4ed6\u5ba2\u4eba\u5199\u83dc\u5355\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">12\u3001\u9009\u62e9\u5668\u7ee7\u7eed\u7740\u91cd\u590d\u7684\u9009\u62e9\u5de5\u4f5c\uff0c\u4e0d\u77e5\u9053\u4ec0\u4e48\u65f6\u5019\u662f\u4e2a\u5934\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u5f53\u4e8e\u8dd1\u817f\u670d\u52a1\u5458\u7ee7\u7eed\u7740\u91cd\u590d\u7684\u8be2\u95ee\u3001\u8f6c\u60a0\uff0c\u4e0d\u77e5\u9053\u672a\u6765\u5728\u4f55\u65b9\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u76f8\u4fe1\u4f60\u5df2\u7ecf\u770b\u51fa\u6765\u4e86\uff0c\u5927\u5802\u7ecf\u7406\u76f8\u5f53\u4e8e\u670d\u52a1\u5668\u7aef\u5957\u63a5\u5b57\uff0c\u8dd1\u817f\u670d\u52a1\u5458\u76f8\u5f53\u4e8e\u9009\u62e9\u5668\uff0c\u70b9\u9910\u670d\u52a1\u5458\u76f8\u5f53\u4e8eWorker\u7ebf\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u542f\u52a8\u670d\u52a1\u5668\u7aef\u4ee3\u7801\uff0c\u4f7f\u7528\u540c\u4e00\u4e2a\u5ba2\u6237\u7aef\u4ee3\u7801\uff0c\u6309\u76f8\u540c\u7684\u5957\u8def\u53d120\u4e2a\u8bf7\u6c42\uff0c\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u65f6\u95f4-&gt;IP:Port-&gt;\u4e3b\u7ebf\u7a0bId:\u5f53\u524d\u8fde\u63a5\u6570\n16:34:39-&gt;127.0.0.1:56105-&gt;1:1\n16:34:39-&gt;127.0.0.1:56106-&gt;1:2\n16:34:39-&gt;127.0.0.1:56107-&gt;1:3\n16:34:39-&gt;127.0.0.1:56108-&gt;1:4\n16:34:39-&gt;127.0.0.1:56109-&gt;1:5\n16:34:39-&gt;127.0.0.1:56110-&gt;1:6\n16:34:39-&gt;127.0.0.1:56111-&gt;1:7\n16:34:39-&gt;127.0.0.1:56112-&gt;1:8\n16:34:39-&gt;127.0.0.1:56113-&gt;1:9\n16:34:39-&gt;127.0.0.1:56114-&gt;1:10\n16:34:39-&gt;127.0.0.1:56115-&gt;1:11\n16:34:39-&gt;127.0.0.1:56116-&gt;1:12\n16:34:39-&gt;127.0.0.1:56117-&gt;1:13\n16:34:39-&gt;127.0.0.1:56118-&gt;1:14\n16:34:39-&gt;127.0.0.1:56119-&gt;1:15\n16:34:39-&gt;127.0.0.1:56120-&gt;1:16\n16:34:39-&gt;127.0.0.1:56121-&gt;1:17\n16:34:39-&gt;127.0.0.1:56122-&gt;1:18\n16:34:39-&gt;127.0.0.1:56123-&gt;1:19\n16:34:39-&gt;127.0.0.1:56124-&gt;1:20\n\n\u65f6\u95f4-&gt;\u7b49\u5f85\u6570\u636e\u7684\u65f6\u95f4,\u8bfb\u53d6\u6570\u636e\u7684\u65f6\u95f4,\u603b\u5171\u8bfb\u53d6\u7684\u5b57\u8282\u6570-&gt;\u7ebf\u7a0bId:\u5f53\u524d\u7ebf\u7a0b\u6570\n16:34:45-&gt;wait=1ms,read=1018ms,total=1048576bs-&gt;11:5\n16:34:45-&gt;wait=0ms,read=1054ms,total=1048576bs-&gt;10:5\n16:34:45-&gt;wait=0ms,read=1072ms,total=1048576bs-&gt;13:6\n16:34:45-&gt;wait=0ms,read=1061ms,total=1048576bs-&gt;14:5\n16:34:45-&gt;wait=0ms,read=1140ms,total=1048576bs-&gt;12:4\n16:34:46-&gt;wait=0ms,read=1001ms,total=1048576bs-&gt;15:5\n16:34:46-&gt;wait=0ms,read=1062ms,total=1048576bs-&gt;17:6\n16:34:46-&gt;wait=0ms,read=1059ms,total=1048576bs-&gt;16:5\n16:34:47-&gt;wait=0ms,read=1001ms,total=1048576bs-&gt;19:4\n16:34:47-&gt;wait=0ms,read=1001ms,total=1048576bs-&gt;20:4\n16:34:47-&gt;wait=0ms,read=1015ms,total=1048576bs-&gt;18:3\n16:34:47-&gt;wait=0ms,read=1001ms,total=1048576bs-&gt;21:2\n16:34:48-&gt;wait=0ms,read=1032ms,total=1048576bs-&gt;22:4\n16:34:49-&gt;wait=0ms,read=1002ms,total=1048576bs-&gt;23:3\n16:34:49-&gt;wait=0ms,read=1001ms,total=1048576bs-&gt;25:2\n16:34:49-&gt;wait=0ms,read=1028ms,total=1048576bs-&gt;24:4\n16:34:50-&gt;wait=0ms,read=1008ms,total=1048576bs-&gt;28:4\n16:34:50-&gt;wait=0ms,read=1033ms,total=1048576bs-&gt;27:3\n16:34:50-&gt;wait=1ms,read=1002ms,total=1048576bs-&gt;29:2\n16:34:50-&gt;wait=0ms,read=1001ms,total=1048576bs-&gt;26:2<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u670d\u52a1\u5668\u7aef\u63a5\u53d720\u4e2a\u8fde\u63a5\uff0c\u521b\u5efa20\u4e2a\u901a\u9053\uff0c\u5e76\u628a\u5b83\u4eec\u6ce8\u518c\u5230\u9009\u62e9\u5668\u4e0a\uff0c\u6b64\u65f6\u4e0d\u9700\u8981\u989d\u5916\u7ebf\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u67d0\u4e2a\u901a\u9053\u5df2\u7ecf\u6709\u6570\u636e\u65f6\uff0c\u624d\u4f1a\u7528\u4e00\u4e2a\u7ebf\u7a0b\u6765\u5904\u7406\u5b83\uff0c\u6240\u4ee5\uff0c\u7ebf\u7a0b\u201c\u7b49\u5f85\u6570\u636e\u201d\u7684\u65f6\u95f4\u662f0\uff0c\u201c\u8bfb\u53d6\u6570\u636e\u201d\u7684\u65f6\u95f4\u8fd8\u662f\u7ea61\u79d2\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a20\u4e2a\u901a\u9053\u662f\u9646\u9646\u7eed\u7eed\u6709\u6570\u636e\u7684\uff0c\u6240\u4ee5\u670d\u52a1\u5668\u7aef\u6700\u591a\u65f6\u662f6\u4e2a\u7ebf\u7a0b\u5728\u540c\u65f6\u8fd0\u884c\u7684\uff0c\u6362\u53e5\u8bdd\u8bf4\uff0c\u7528\u5305\u542b6\u4e2a\u7ebf\u7a0b\u7684\u7ebf\u7a0b\u6c60\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u6bd4\u4e0e\u7ed3\u8bba\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5904\u7406\u540c\u6837\u768420\u4e2a\u8bf7\u6c42\uff0c\u4e00\u4e2a\u9700\u8981\u752820\u4e2a\u7ebf\u7a0b\uff0c\u4e00\u4e2a\u9700\u8981\u75286\u4e2a\u7ebf\u7a0b\uff0c\u8282\u7701\u4e8670%\u7ebf\u7a0b\u6570\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u672c\u4f8b\u4e2d\uff0c\u4e24\u79cd\u611f\u5174\u8da3\u7684\u64cd\u4f5c\u5171\u7528\u4e00\u4e2a\u9009\u62e9\u5668\uff0c\u4e14\u9009\u62e9\u5668\u8fd0\u884c\u5728\u4e3b\u7ebf\u7a0b\u91cc\uff0cWorker\u7ebf\u7a0b\u662f\u65b0\u7684\u7ebf\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5176\u5b9e\u5bf9\u4e8e\u9009\u62e9\u5668\u7684\u4e2a\u6570\u3001\u9009\u62e9\u5668\u8fd0\u884c\u5728\u54ea\u4e2a\u7ebf\u7a0b\u91cc\u3001\u662f\u5426\u4f7f\u7528\u65b0\u7684\u7ebf\u7a0b\u6765\u5904\u7406\u8bf7\u6c42\u90fd\u6ca1\u6709\u8981\u6c42\uff0c\u8981\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u6765\u5b9a\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6bd4\u5982\u8bf4redis\uff0c\u548c\u5904\u7406\u8bf7\u6c42\u76f8\u5173\u7684\u5c31\u4e00\u4e2a\u7ebf\u7a0b\uff0c\u9009\u62e9\u5668\u8fd0\u884c\u5728\u91cc\u9762\uff0c\u5904\u7406\u8bf7\u6c42\u7684\u7a0b\u5e8f\u4e5f\u8fd0\u884c\u5728\u91cc\u9762\uff0c\u6240\u4ee5\u8fd9\u4e2a\u7ebf\u7a0b\u65e2\u662fI\/O\u7ebf\u7a0b\uff0c\u4e5f\u662fWorker\u7ebf\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u4e24\u4e2a\u9009\u62e9\u5668\uff0c\u4e00\u4e2a\u5904\u7406OP_ACCEPT\uff0c\u4e00\u4e2a\u5904\u7406OP_READ\uff0c\u8ba9\u5b83\u4eec\u5206\u522b\u8fd0\u884c\u5728\u4e24\u4e2a\u5355\u72ec\u7684I\/O\u7ebf\u7a0b\u91cc\u3002\u5bf9\u4e8e\u80fd\u5feb\u901f\u5b8c\u6210\u7684\u64cd\u4f5c\u53ef\u4ee5\u76f4\u63a5\u5728I\/O\u7ebf\u7a0b\u91cc\u505a\u4e86\uff0c\u5bf9\u4e8e\u975e\u5e38\u8017\u65f6\u7684\u64cd\u4f5c\u4e00\u5b9a\u8981\u4f7f\u7528Worker\u7ebf\u7a0b\u6c60\u6765\u5904\u7406\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u79cd\u5904\u7406\u6a21\u5f0f\u5c31\u662f\u88ab\u79f0\u4e3a\u7684\u591a\u8def\u590d\u7528I\/O\uff0c\u591a\u8def\u6307\u7684\u662f\u591a\u4e2aSocket\u901a\u9053\uff0c\u590d\u7528\u6307\u7684\u662f\u53ea\u7528\u4e00\u4e2a\u7ebf\u7a0b\u6765\u7ba1\u7406\u5b83\u4eec\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u7a0d\u5fae\u5206\u6790\u4e00\u4e0b<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u5bf9\u4e00\u7684\u5f62\u5f0f\uff0c\u4e00\u4e2a\u684c\u5b50\u914d\u4e00\u4e2a\u670d\u52a1\u5458\uff0c\u4e00\u4e2aSocket\u5206\u914d\u4e00\u4e2a\u7ebf\u7a0b\uff0c\u54cd\u5e94\u901f\u5ea6\u6700\u5feb\uff0c\u6bd5\u7adf\u662fVIP\u561b\uff0c\u4f46\u662f\u6548\u7387\u5f88\u4f4e\uff0c\u670d\u52a1\u5458\u5927\u90e8\u5206\u65f6\u95f4\u90fd\u662f\u5728\u7ad9\u7740\uff0c\u7ebf\u7a0b\u5927\u90e8\u5206\u65f6\u95f4\u90fd\u662f\u5728\u7b49\u5f85\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u591a\u8def\u590d\u7528\u7684\u5f62\u5f0f\uff0c\u6240\u6709\u684c\u5b50\u5171\u7528\u4e00\u4e2a\u8dd1\u817f\u670d\u52a1\u5458\uff0c\u6240\u6709Socket\u5171\u7528\u4e00\u4e2a\u9009\u62e9\u5668\u7ebf\u7a0b\uff0c\u54cd\u5e94\u901f\u5ea6\u80af\u5b9a\u53d8\u6162\u4e86\uff0c\u6bd5\u7adf\u662f\u4e00\u5bf9\u591a\u561b\u3002\u4f46\u662f\u6548\u7387\u63d0\u9ad8\u4e86\uff0c\u70b9\u9910\u670d\u52a1\u5458\u5728\u9700\u8981\u70b9\u9910\u65f6\u624d\u4f1a\u8fc7\u53bb\uff0c\u5de5\u4f5c\u7ebf\u7a0b\u5728\u6570\u636e\u5c31\u7eea\u65f6\u624d\u4f1a\u5f00\u59cb\u5de5\u4f5c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eceVIP\u5230\u591a\u8def\u590d\u7528\uff0c\u5f62\u5f0f\u4e0a\u786e\u5b9e\u6709\u5f88\u5927\u7684\u4e0d\u540c\uff0c\u5176\u672c\u8d28\u662f\u4ece\u4e00\u5bf9\u4e00\u5230\u4e00\u5bf9\u591a\u7684\u8f6c\u53d8\uff0c\u5176\u5b9e\u5c31\u662f\u727a\u7272\u4e86\u54cd\u5e94\u901f\u5ea6\uff0c\u6362\u6765\u4e86\u6548\u7387\u7684\u63d0\u5347\uff0c\u4e0d\u8fc7\u7efc\u5408\u6027\u80fd\u8fd8\u662f\u5f97\u5230\u4e86\u6781\u5927\u7684\u6539\u8fdb\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c31\u996d\u5e97\u800c\u8a00\uff0c\u7a76\u7adf\u51e0\u5f20\u684c\u5b50\u914d\u4e00\u4e2a\u8dd1\u817f\u670d\u52a1\u5458\uff0c\u51e0\u5f20\u684c\u5b50\u914d\u4e00\u4e2a\u70b9\u9910\u670d\u52a1\u5458\uff0c\u7ecf\u8fc7\u4e00\u6bb5\u65f6\u95f4\u8fd0\u884c\uff0c\u4e00\u5b9a\u4f1a\u6709\u4e00\u4e2a\u6700\u4f18\u89e3\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5c31\u7a0b\u5e8f\u800c\u8a00\uff0c\u7a76\u7adf\u9700\u8981\u51e0\u4e2a\u9009\u62e9\u5668\u7ebf\u7a0b\uff0c\u51e0\u4e2a\u5de5\u4f5c\u7ebf\u7a0b\uff0c\u7ecf\u8fc7\u8bc4\u4f30\u6d4b\u8bd5\u540e\uff0c\u4e5f\u4f1a\u6709\u4e00\u4e2a\u6700\u4f18\u89e3\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u65e6\u8fbe\u5230\u6700\u4f18\u89e3\u540e\uff0c\u5c31\u4e0d\u53ef\u80fd\u518d\u63d0\u5347\u4e86\uff0c\u8fd9\u540c\u6837\u662f\u7531\u591a\u8def\u590d\u7528\u8fd9\u79cd\u4e00\u5bf9\u591a\u7684\u5f62\u5f0f\u6240\u9650\u5236\u7684\u3002\u5c31\u50cf\u4e00\u5bf9\u4e00\u7684\u5f62\u5f0f\u9650\u5236\u4e00\u6837\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eba\u4eec\u7684\u8ffd\u6c42\u662f\u65e0\u6b62\u5883\u7684\uff0c\u5982\u4f55\u5bf9\u591a\u8def\u590d\u7528\u7ee7\u7eed\u63d0\u5347\u5462\uff1f\u7b54\u6848\u4e00\u5b9a\u662f\u5177\u6709\u98a0\u8986\u6027\u7684\uff0c\u5373\u629b\u5f03\u591a\u8def\u590d\u7528\uff0c\u91c7\u7528\u5168\u65b0\u7684\u5f62\u5f0f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd8\u4ee5\u996d\u5e97\u4e3a\u4f8b\uff0c\u5982\u4f55\u5728\u6700\u4f18\u89e3\u7684\u60c5\u51b5\u4e0b\uff0c\u65e2\u8981\u7ee7\u7eed\u51cf\u5c11\u670d\u52a1\u5458\u6570\u91cf\uff0c\u8fd8\u8981\u4f7f\u6548\u7387\u63d0\u5347\u5462\uff1f\u53ef\u80fd\u6709\u4e9b\u670b\u53cb\u5df2\u7ecf\u731c\u5230\u4e86\uff0c\u90a3\u5c31\u662f\u629b\u5f03\u670d\u52a1\u5458\u670d\u52a1\u5ba2\u4eba\u8fd9\u79cd\u6a21\u5f0f\uff0c\u628a\u996d\u5e97\u6539\u6210\u81ea\u52a9\u9910\u5385\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u5ba2\u4eba\u8fdb\u95e8\u65f6\uff0c\u628a\u9910\u5177\u7ed9\u4ed6\uff0c\u5e76\u544a\u8bc9\u4ed6\u5c31\u9910\u65f6\u957f\u3001\u4e0d\u51c6\u6d6a\u8d39\u7b49\u8fd9\u4e9b\u89c4\u5219\uff0c\u7136\u540e\u5c31\u4e0d\u7528\u7ba1\u4e86\u3002\u5ba2\u4eba\u81ea\u5df1\u9009\u9910\uff0c\u81ea\u5df1\u5403\u5b8c\uff0c\u81ea\u5df1\u8d70\u4eba\uff0c\u4e0d\u7528\u518d\u7b49\u670d\u52a1\u5458\u4e86\uff0c\u56e0\u6b64\u4e5f\u4e0d\u518d\u9700\u8981\u670d\u52a1\u5458\u4e86\u3002\uff08\u6536\u62fe\u684c\u5b50\u7684\u9664\u5916\u3002\uff09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u79cd\u6a21\u5f0f\u5bf9\u5e94\u5230\u7a0b\u5e8f\u91cc\uff0c\u5176\u5b9e\u5c31\u662fAIO\uff0c\u5728Java\u91cc\u4e5f\u65e9\u5c31\u6709\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u563b\u563b\uff0cJava AIO\u6765\u5566<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee3\u7801\u7684\u5199\u6cd5\u975e\u5e38\u7684\u56fa\u5b9a\uff0c\u53ef\u4ee5\u914d\u5408\u7740\u540e\u9762\u7684\u89e3\u8bf4\u6765\u770b\uff0c\u8fd9\u6837\u5c31\u597d\u7406\u89e3\u4e86\uff0c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class AioServer {\n\n  static int clientCount = 0;\n  static AtomicInteger counter = new AtomicInteger(0);\n  static SimpleDateFormat sdf = new SimpleDateFormat(\"HH:mm:ss\"); \n  \n  public static void main(String[] args) {\n    try {\n      AsynchronousServerSocketChannel assc = AsynchronousServerSocketChannel.open();\n      assc.bind(new InetSocketAddress(\"localhost\", 8080));\n      \/\/\u975e\u963b\u585e\u65b9\u6cd5\uff0c\u5176\u5b9e\u5c31\u662f\u6ce8\u518c\u4e86\u4e2a\u56de\u8c03\uff0c\u800c\u4e14\u53ea\u80fd\u63a5\u53d7\u4e00\u4e2a\u8fde\u63a5\n      assc.accept(null, new CompletionHandler&lt;AsynchronousSocketChannel, Object&gt;() {\n\n        @Override\n        public void completed(AsynchronousSocketChannel asc, Object attachment) {\n          \/\/\u518d\u6b21\u6ce8\u518c\uff0c\u63a5\u53d7\u4e0b\u4e00\u4e2a\u8fde\u63a5\n          assc.accept(null, this);\n          try {\n            InetSocketAddress rsa = (InetSocketAddress)asc.getRemoteAddress();\n            System.out.println(time() + \"-&gt;\" + rsa.getHostName() + \":\" + rsa.getPort() + \"-&gt;\" + Thread.currentThread().getId() + \":\" + (++clientCount));\n          } catch (Exception e) {\n          }\n          readFromChannelAsync(asc);\n        }\n\n        @Override\n        public void failed(Throwable exc, Object attachment) {\n          \n        }\n      });\n      \/\/\u4e0d\u8ba9\u4e3b\u7ebf\u7a0b\u9000\u51fa\n      synchronized (AioServer.class) {\n        AioServer.class.wait();\n      }\n    } catch (Exception e) {\n      e.printStackTrace();\n    }\n  }\n\n  static void readFromChannelAsync(AsynchronousSocketChannel asc) {\n    \/\/\u4f1a\u628a\u6570\u636e\u8bfb\u5165\u5230\u8be5buffer\u4e4b\u540e\uff0c\u518d\u89e6\u53d1\u5de5\u4f5c\u7ebf\u7a0b\u6765\u6267\u884c\u56de\u8c03\n    ByteBuffer bb = ByteBuffer.allocate(1024*1024*1 + 1);\n    long begin = System.currentTimeMillis();\n    \/\/\u975e\u963b\u585e\u65b9\u6cd5\uff0c\u5176\u5b9e\u5c31\u662f\u6ce8\u518c\u4e86\u4e2a\u56de\u8c03\uff0c\u800c\u4e14\u53ea\u80fd\u63a5\u53d7\u4e00\u6b21\u8bfb\u53d6\n    asc.read(bb, null, new CompletionHandler&lt;Integer, Object&gt;() {\n      \/\/\u4ece\u8be5\u8fde\u63a5\u4e0a\u4e00\u5171\u8bfb\u5230\u7684\u5b57\u8282\u6570\n      int total = 0;\n      \/**\n       * @param count \u8868\u793a\u672c\u6b21\u8bfb\u53d6\u5230\u7684\u5b57\u8282\u6570\uff0c-1\u8868\u793a\u6570\u636e\u5df2\u8bfb\u5b8c\n       *\/\n      @Override\n      public void completed(Integer count, Object attachment) {\n        counter.incrementAndGet();\n        if (count &gt; -1) {\n          total += count;\n        }\n        int size = bb.position();\n        System.out.println(time() + \"-&gt;count=\" + count + \",total=\" + total + \"bs,buffer=\" + size + \"bs-&gt;\" + Thread.currentThread().getId() + \":\" + counter.get());\n        if (count &gt; -1) {\/\/\u6570\u636e\u8fd8\u6ca1\u6709\u8bfb\u5b8c\n          \/\/\u518d\u6b21\u6ce8\u518c\u56de\u8c03\uff0c\u63a5\u53d7\u4e0b\u4e00\u6b21\u8bfb\u53d6\n          asc.read(bb, null, this);\n        } else {\/\/\u6570\u636e\u5df2\u8bfb\u5b8c\n          try {\n            asc.close();\n          } catch (Exception e) {\n            e.printStackTrace();\n          }\n        }\n        counter.decrementAndGet();\n      }\n\n      @Override\n      public void failed(Throwable exc, Object attachment) {\n        \n      }\n    });\n    long end = System.currentTimeMillis();\n    System.out.println(time() + \"-&gt;exe read req,use=\" + (end -begin) + \"ms\" + \"-&gt;\" + Thread.currentThread().getId());\n  }\n  \n  static String time() {\n    return sdf.format(new Date());\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u7684\u5927\u81f4\u5904\u7406\u8fc7\u7a0b\u5982\u4e0b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1\u3001\u521d\u59cb\u5316\u4e00\u4e2aAsynchronousServerSocketChannel\u5bf9\u8c61\uff0c\u5e76\u5f00\u59cb\u76d1\u542c<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2\u3001\u901a\u8fc7accept\u65b9\u6cd5\u6ce8\u518c\u4e00\u4e2a\u201c\u5b8c\u6210\u5904\u7406\u5668\u201d\u7684\u63a5\u53d7\u8fde\u63a5\u56de\u8c03\uff0c\u5373CompletionHandler\uff0c\u7528\u4e8e\u5728\u63a5\u53d7\u5230\u8fde\u63a5\u540e\u7684\u76f8\u5173\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">3\u3001\u5f53\u5ba2\u6237\u7aef\u8fde\u63a5\u8fc7\u6765\u540e\uff0c\u7531\u7cfb\u7edf\u6765\u63a5\u53d7\uff0c\u5e76\u521b\u5efa\u597dAsynchronousSocketChannel\u5bf9\u8c61\uff0c\u7136\u540e\u89e6\u53d1\u8be5\u56de\u8c03\uff0c\u5e76\u628a\u8be5\u5bf9\u8c61\u4f20\u8fdb\u8be5\u56de\u8c03\uff0c\u8be5\u56de\u8c03\u4f1a\u5728Worker\u7ebf\u7a0b\u4e2d\u6267\u884c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">4\u3001\u5728\u63a5\u53d7\u8fde\u63a5\u56de\u8c03\u91cc\uff0c\u518d\u6b21\u4f7f\u7528accept\u65b9\u6cd5\u6ce8\u518c\u4e00\u6b21\u76f8\u540c\u7684\u5b8c\u6210\u5904\u7406\u5668\u5bf9\u8c61\uff0c\u7528\u4e8e\u8ba9\u7cfb\u7edf\u63a5\u53d7\u4e0b\u4e00\u4e2a\u8fde\u63a5\u3002\u5c31\u662f\u8fd9\u79cd\u6ce8\u518c\u53ea\u80fd\u4f7f\u7528\u4e00\u6b21\uff0c\u6240\u4ee5\u8981\u4e0d\u505c\u7684\u8fde\u7eed\u6ce8\u518c\uff0c\u4eba\u5bb6\u5c31\u662f\u8fd9\u6837\u8bbe\u8ba1\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">5\u3001\u5728\u63a5\u53d7\u8fde\u63a5\u56de\u8c03\u91cc\uff0c\u4f7f\u7528AsynchronousSocketChannel\u5bf9\u8c61\u7684read\u65b9\u6cd5\u6ce8\u518c\u53e6\u4e00\u4e2a\u63a5\u53d7\u6570\u636e\u56de\u8c03\uff0c\u7528\u4e8e\u5728\u63a5\u53d7\u5230\u6570\u636e\u540e\u7684\u76f8\u5173\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">6\u3001\u5f53\u5ba2\u6237\u7aef\u6570\u636e\u8fc7\u6765\u540e\uff0c\u7531\u7cfb\u7edf\u63a5\u53d7\uff0c\u5e76\u653e\u5165\u6307\u5b9a\u597d\u7684ByteBuffer\u4e2d\uff0c\u7136\u540e\u89e6\u53d1\u8be5\u56de\u8c03\uff0c\u5e76\u628a\u672c\u6b21\u63a5\u53d7\u5230\u7684\u6570\u636e\u5b57\u8282\u6570\u4f20\u5165\u8be5\u56de\u8c03\uff0c\u8be5\u56de\u8c03\u4f1a\u5728Worker\u7ebf\u7a0b\u4e2d\u6267\u884c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">7\u3001\u5728\u63a5\u53d7\u6570\u636e\u56de\u8c03\u91cc\uff0c\u5982\u679c\u6570\u636e\u6ca1\u6709\u63a5\u53d7\u5b8c\uff0c\u9700\u8981\u518d\u6b21\u4f7f\u7528read\u65b9\u6cd5\u628a\u540c\u4e00\u4e2a\u5bf9\u8c61\u6ce8\u518c\u4e00\u6b21\uff0c\u7528\u4e8e\u8ba9\u7cfb\u7edf\u63a5\u53d7\u4e0b\u4e00\u6b21\u6570\u636e\u3002\u8fd9\u548c\u4e0a\u9762\u7684\u5957\u8def\u662f\u4e00\u6837\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">8\u3001\u5ba2\u6237\u7aef\u7684\u6570\u636e\u53ef\u80fd\u662f\u5206\u591a\u6b21\u4f20\u5230\u670d\u52a1\u5668\u7aef\u7684\uff0c\u6240\u4ee5\u63a5\u53d7\u6570\u636e\u56de\u8c03\u4f1a\u88ab\u6267\u884c\u591a\u6b21\uff0c\u76f4\u5230\u6570\u636e\u63a5\u53d7\u5b8c\u4e3a\u6b62\u3002\u591a\u6b21\u63a5\u53d7\u5230\u7684\u6570\u636e\u5408\u8d77\u6765\u624d\u662f\u5b8c\u6574\u7684\u6570\u636e\uff0c\u8fd9\u4e2a\u4e00\u5b9a\u8981\u5904\u7406\u597d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">9\u3001\u5173\u4e8eByteBuffer\uff0c\u8981\u4e48\u8db3\u591f\u7684\u5927\uff0c\u80fd\u591f\u88c5\u5f97\u4e0b\u5b8c\u6574\u7684\u5ba2\u6237\u7aef\u6570\u636e\uff0c\u8fd9\u6837\u591a\u6b21\u63a5\u53d7\u7684\u6570\u636e\u76f4\u63a5\u5f80\u91cc\u8ffd\u52a0\u5373\u53ef\u3002\u8981\u4e48\u6bcf\u6b21\u628aByteBuffer\u4e2d\u7684\u6570\u636e\u79fb\u5230\u522b\u7684\u5730\u65b9\u5b58\u50a8\u8d77\u6765\uff0c\u7136\u540e\u6e05\u7a7aByteBuffer\uff0c\u7528\u4e8e\u8ba9\u7cfb\u7edf\u5f80\u91cc\u88c5\u5165\u4e0b\u4e00\u6b21\u63a5\u53d7\u7684\u6570\u636e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\uff1a\u5982\u679c\u51fa\u73b0ByteBuffer\u7a7a\u95f4\u4e0d\u8db3\uff0c\u5219\u7cfb\u7edf\u4e0d\u4f1a\u88c5\u5165\u6570\u636e\uff0c\u5c31\u4f1a\u5bfc\u81f4\u5ba2\u6237\u7aef\u6570\u636e\u603b\u662f\u8bfb\u4e0d\u5b8c\uff0c\u6781\u6709\u53ef\u80fd\u8fdb\u5165\u6b7b\u5faa\u73af\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u542f\u52a8\u670d\u52a1\u5668\u7aef\u4ee3\u7801\uff0c\u4f7f\u7528\u540c\u4e00\u4e2a\u5ba2\u6237\u7aef\u4ee3\u7801\uff0c\u6309\u76f8\u540c\u7684\u5957\u8def\u53d120\u4e2a\u8bf7\u6c42\uff0c\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u65f6\u95f4-&gt;IP:Port-&gt;\u56de\u8c03\u7ebf\u7a0bId:\u5f53\u524d\u8fde\u63a5\u6570\n17:20:47-&gt;127.0.0.1:56454-&gt;15:1\n\u65f6\u95f4-&gt;\u53d1\u8d77\u4e00\u4e2a\u8bfb\u8bf7\u6c42\uff0c\u8017\u65f6-&gt;\u56de\u8c03\u7ebf\u7a0bId\n17:20:47-&gt;exe read req,use=3ms-&gt;15\n17:20:47-&gt;127.0.0.1:56455-&gt;15:2\n17:20:47-&gt;exe read req,use=1ms-&gt;15\n17:20:47-&gt;127.0.0.1:56456-&gt;15:3\n17:20:47-&gt;exe read req,use=0ms-&gt;15\n17:20:47-&gt;127.0.0.1:56457-&gt;16:4\n17:20:47-&gt;127.0.0.1:56458-&gt;15:5\n17:20:47-&gt;exe read req,use=1ms-&gt;16\n17:20:47-&gt;exe read req,use=1ms-&gt;15\n17:20:47-&gt;127.0.0.1:56460-&gt;15:6\n17:20:47-&gt;127.0.0.1:56459-&gt;17:7\n17:20:47-&gt;exe read req,use=0ms-&gt;15\n17:20:47-&gt;127.0.0.1:56462-&gt;15:8\n17:20:47-&gt;127.0.0.1:56461-&gt;16:9\n17:20:47-&gt;exe read req,use=1ms-&gt;15\n17:20:47-&gt;exe read req,use=0ms-&gt;16\n17:20:47-&gt;exe read req,use=0ms-&gt;17\n17:20:47-&gt;127.0.0.1:56465-&gt;16:10\n17:20:47-&gt;127.0.0.1:56463-&gt;18:11\n17:20:47-&gt;exe read req,use=0ms-&gt;18\n17:20:47-&gt;127.0.0.1:56466-&gt;15:12\n17:20:47-&gt;exe read req,use=1ms-&gt;16\n17:20:47-&gt;127.0.0.1:56464-&gt;17:13\n17:20:47-&gt;exe read req,use=1ms-&gt;15\n17:20:47-&gt;127.0.0.1:56467-&gt;18:14\n17:20:47-&gt;exe read req,use=2ms-&gt;17\n17:20:47-&gt;exe read req,use=1ms-&gt;18\n17:20:47-&gt;127.0.0.1:56468-&gt;15:15\n17:20:47-&gt;exe read req,use=1ms-&gt;15\n17:20:47-&gt;127.0.0.1:56469-&gt;16:16\n17:20:47-&gt;127.0.0.1:56470-&gt;18:17\n17:20:47-&gt;exe read req,use=1ms-&gt;18\n17:20:47-&gt;exe read req,use=1ms-&gt;16\n17:20:47-&gt;127.0.0.1:56472-&gt;15:18\n17:20:47-&gt;127.0.0.1:56473-&gt;19:19\n17:20:47-&gt;exe read req,use=2ms-&gt;15\n17:20:47-&gt;127.0.0.1:56471-&gt;17:20\n17:20:47-&gt;exe read req,use=1ms-&gt;19\n17:20:47-&gt;exe read req,use=1ms-&gt;17\n\n\u65f6\u95f4-&gt;\u672c\u6b21\u63a5\u53d7\u5230\u7684\u5b57\u8282\u6570,\u622a\u81f3\u5230\u76ee\u524d\u63a5\u53d7\u5230\u7684\u5b57\u8282\u603b\u6570,buffer\u4e2d\u7684\u5b57\u8282\u603b\u6570-&gt;\u56de\u8c03\u7ebf\u7a0bId:\u5f53\u524d\u7ebf\u7a0b\u6570\n17:20:52-&gt;count=65536,total=65536bs,buffer=65536bs-&gt;14:1\n17:20:52-&gt;count=65536,total=65536bs,buffer=65536bs-&gt;14:1\n17:20:52-&gt;count=65536,total=65536bs,buffer=65536bs-&gt;14:1\n17:20:52-&gt;count=230188,total=295724bs,buffer=295724bs-&gt;12:1\n17:20:52-&gt;count=752852,total=1048576bs,buffer=1048576bs-&gt;14:3\n17:20:52-&gt;count=131072,total=196608bs,buffer=196608bs-&gt;17:2\n\n\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\u3002\n\n17:20:57-&gt;count=-1,total=1048576bs,buffer=1048576bs-&gt;15:1\n17:20:57-&gt;count=-1,total=1048576bs,buffer=1048576bs-&gt;15:1\n17:20:57-&gt;count=-1,total=1048576bs,buffer=1048576bs-&gt;15:1\n17:20:57-&gt;count=-1,total=1048576bs,buffer=1048576bs-&gt;15:1\n17:20:58-&gt;count=-1,total=1048576bs,buffer=1048576bs-&gt;15:1\n17:20:58-&gt;count=-1,total=1048576bs,buffer=1048576bs-&gt;15:1\n17:20:58-&gt;count=-1,total=1048576bs,buffer=1048576bs-&gt;15:1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u7cfb\u7edf\u63a5\u53d7\u5230\u8fde\u63a5\u540e\uff0c\u5728\u5de5\u4f5c\u7ebf\u7a0b\u4e2d\u6267\u884c\u4e86\u56de\u8c03\u3002\u5e76\u4e14\u5728\u56de\u8c03\u4e2d\u6267\u884c\u4e86read\u65b9\u6cd5\uff0c\u8017\u65f6\u662f0\uff0c\u56e0\u4e3a\u53ea\u662f\u6ce8\u518c\u4e86\u4e2a\u63a5\u53d7\u6570\u636e\u7684\u56de\u8c03\u800c\u5df2\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7cfb\u7edf\u63a5\u53d7\u5230\u6570\u636e\u540e\uff0c\u628a\u6570\u636e\u653e\u5165ByteBuffer\uff0c\u5728\u5de5\u4f5c\u7ebf\u7a0b\u4e2d\u6267\u884c\u4e86\u56de\u8c03\u3002\u5e76\u4e14\u56de\u8c03\u4e2d\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528ByteBuffer\u4e2d\u7684\u6570\u636e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u63a5\u53d7\u6570\u636e\u7684\u56de\u8c03\u88ab\u6267\u884c\u4e86\u591a\u6b21\uff0c\u591a\u6b21\u63a5\u53d7\u5230\u7684\u6570\u636e\u52a0\u8d77\u6765\u6b63\u597d\u7b49\u4e8e\u5ba2\u6237\u7aef\u4f20\u6765\u7684\u6570\u636e\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u56e0\u4e3a\u7cfb\u7edf\u662f\u63a5\u53d7\u5230\u6570\u636e\u540e\u624d\u89e6\u53d1\u7684\u56de\u8c03\uff0c\u6240\u4ee5\u670d\u52a1\u5668\u7aef\u6700\u591a\u65f6\u662f3\u4e2a\u7ebf\u7a0b\u5728\u540c\u65f6\u8fd0\u884c\u56de\u8c03\u7684\uff0c\u6362\u53e5\u8bdd\u8bf4\uff0c\u7ebf\u7a0b\u6c60\u5305\u542b3\u4e2a\u7ebf\u7a0b\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u6bd4\u4e0e\u7ed3\u8bba\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5904\u7406\u540c\u6837\u768420\u4e2a\u8bf7\u6c42\uff0c\u4e00\u4e2a\u9700\u8981\u752820\u4e2a\u7ebf\u7a0b\uff0c\u4e00\u4e2a\u9700\u8981\u75286\u4e2a\u7ebf\u7a0b\uff0c\u4e00\u4e2a\u9700\u89813\u4e2a\u7ebf\u7a0b\uff0c\u53c8\u8282\u7701\u4e8650%\u7ebf\u7a0b\u6570\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\uff1a\u4e0d\u7528\u7279\u522b\u8f83\u771f\u8fd9\u4e2a\u6bd4\u8f83\u7ed3\u679c\uff0c\u8fd9\u91cc\u53ea\u662f\u4e3a\u4e86\u8bf4\u660e\u95ee\u9898\u800c\u5df2\u3002\u54c8\u54c8\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e09\u79cd\u5904\u7406\u65b9\u5f0f\u7684\u5bf9\u6bd4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\u79cd\u662f\u963b\u585eIO\uff0c\u963b\u585e\u70b9\u6709\u4e24\u4e2a\uff0c\u7b49\u5f85\u6570\u636e\u5c31\u7eea\u7684\u8fc7\u7a0b\u548c\u8bfb\u53d6\u6570\u636e\u7684\u8fc7\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e8c\u79cd\u662f\u963b\u585eIO\uff0c\u963b\u585e\u70b9\u6709\u4e00\u4e2a\uff0c\u8bfb\u53d6\u6570\u636e\u7684\u8fc7\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e09\u79cd\u662f\u975e\u963b\u585eIO\uff0c\u6ca1\u6709\u963b\u585e\u70b9\uff0c\u5f53\u5de5\u4f5c\u7ebf\u7a0b\u542f\u52a8\u65f6\uff0c\u6570\u636e\u5df2\u7ecf\uff08\u88ab\u7cfb\u7edf\uff09\u51c6\u5907\u597d\u53ef\u4ee5\u76f4\u63a5\u7528\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ef\u89c1\uff0c\u8fd9\u662f\u4e00\u4e2a\u9010\u6b65\u6d88\u9664\u963b\u585e\u70b9\u7684\u8fc7\u7a0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u6b21\u6765\u8c08\u8c08\u5404\u79cdIO\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53ea\u6709\u4e00\u4e2a\u7ebf\u7a0b\uff0c\u63a5\u53d7\u4e00\u4e2a\u8fde\u63a5\uff0c\u8bfb\u53d6\u6570\u636e\uff0c\u5904\u7406\u4e1a\u52a1\uff0c\u5199\u56de\u7ed3\u679c\uff0c\u518d\u63a5\u53d7\u4e0b\u4e00\u4e2a\u8fde\u63a5\uff0c\u8fd9\u662f\u540c\u6b65\u963b\u585e\u3002\u8fd9\u79cd\u7528\u6cd5\u51e0\u4e4e\u6ca1\u6709\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u4e2a\u7ebf\u7a0b\u548c\u4e00\u4e2a\u7ebf\u7a0b\u6c60\uff0c\u7ebf\u7a0b\u63a5\u53d7\u5230\u8fde\u63a5\u540e\uff0c\u628a\u5b83\u4e22\u7ed9\u7ebf\u7a0b\u6c60\u4e2d\u7684\u7ebf\u7a0b\uff0c\u518d\u63a5\u53d7\u4e0b\u4e00\u4e2a\u8fde\u63a5\uff0c\u8fd9\u662f\u5f02\u6b65\u963b\u585e\u3002\u5bf9\u5e94\u793a\u4f8b\u4e00\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u4e2a\u7ebf\u7a0b\u548c\u4e00\u4e2a\u7ebf\u7a0b\u6c60\uff0c\u7ebf\u7a0b\u8fd0\u884cselector\uff0c\u6267\u884cselect\u64cd\u4f5c\uff0c\u628a\u5c31\u7eea\u7684\u8fde\u63a5\u62ff\u51fa\u6765\u4e22\u7ed9\u7ebf\u7a0b\u6c60\u4e2d\u7684\u7ebf\u7a0b\uff0c\u518d\u6267\u884c\u4e0b\u4e00\u6b21\u7684select\u64cd\u4f5c\uff0c\u5c31\u662f\u591a\u8def\u590d\u7528\uff0c\u8fd9\u662f\u5f02\u6b65\u963b\u585e\u3002\u5bf9\u5e94\u793a\u4f8b\u4e8c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u4e2a\u7ebf\u7a0b\u548c\u4e00\u4e2a\u7ebf\u7a0b\u6c60\uff0c\u7ebf\u7a0b\u6ce8\u518c\u4e00\u4e2aaccept\u56de\u8c03\uff0c\u7cfb\u7edf\u5e2e\u6211\u4eec\u63a5\u53d7\u597d\u8fde\u63a5\u540e\uff0c\u624d\u89e6\u53d1\u56de\u8c03\u5728\u7ebf\u7a0b\u6c60\u4e2d\u6267\u884c\uff0c\u6267\u884c\u65f6\u518d\u6ce8\u518cread\u56de\u8c03\uff0c\u7cfb\u7edf\u5e2e\u6211\u4eec\u63a5\u53d7\u597d\u6570\u636e\u540e\uff0c\u624d\u89e6\u53d1\u56de\u8c03\u5728\u7ebf\u7a0b\u6c60\u4e2d\u6267\u884c\uff0c\u5c31\u662fAIO\uff0c\u8fd9\u662f\u5f02\u6b65\u975e\u963b\u585e\u3002\u5bf9\u5e94\u793a\u4f8b\u4e09\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">redis\u4e5f\u662f\u591a\u8def\u590d\u7528\uff0c\u4f46\u5b83\u53ea\u6709\u4e00\u4e2a\u7ebf\u7a0b\u5728\u6267\u884cselect\u64cd\u4f5c\uff0c\u5904\u7406\u5c31\u7eea\u7684\u8fde\u63a5\uff0c\u6574\u4e2a\u662f\u4e32\u884c\u5316\u7684\uff0c\u6240\u4ee5\u5929\u7136\u4e0d\u5b58\u5728\u5e76\u53d1\u95ee\u9898\u3002\u53ea\u80fd\u628a\u5b83\u5f52\u4e3a\u540c\u6b65\u963b\u585e\u4e86\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BIO\u662f\u963b\u585eIO\uff0c\u53ef\u4ee5\u662f\u540c\u6b65\u963b\u585e\uff0c\u4e5f\u53ef\u4ee5\u662f\u5f02\u6b65\u963b\u585e\u3002AIO\u662f\u5f02\u6b65IO\uff0c\u53ea\u6709\u5f02\u6b65\u975e\u963b\u585e\u8fd9\u4e00\u79cd\u3002\u56e0\u6b64\u6ca1\u6709\u540c\u6b65\u975e\u963b\u585e\u8fd9\u79cd\u8bf4\u6cd5\uff0c\u56e0\u4e3a\u540c\u6b65\u4e00\u5b9a\u662f\u963b\u585e\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\uff1a\u4ee5\u4e0a\u7684\u8bf4\u6cd5\u662f\u7ad9\u5728\u7528\u6237\u7a0b\u5e8f\/\u7ebf\u7a0b\u7684\u7acb\u573a\u4e0a\u6765\u8bf4\u7684\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u53c2\u8003\u8d44\u6599\uff1ahttps:\/\/www.cnblogs.com\/lixinjie\/p\/a-post-tell-clearly-about-io-multiplexing-and-async-io.html<\/p>\n<!-- <audio autoplay=\"autoplay\" height=\"100\" width=\"100\" hidden=\"true\"><source src=\"https:\/\/c.coka.la\/orAvPR.mp3\" type=\"audio\/mp3\"\/><\/audio><img decoding=\"async\" src=\"https:\/\/images.weserv.nl\/?url=https:\/\/ws3.sinaimg.cn\/large\/8fa5dcfcgy1g4em3rzar5j20ib089ae0.jpg\" alt=\"\u4e1a\u4f59\u8349\u516c\u4f17\u53f7\"\/> --><p><!-- <img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/xmt1139057136\/xttblog\/master\/8fa5dcfcgy1g4em3rzar5j20ib089ae0.jpg\" alt=\"\u4e1a\u4f59\u8349\u516c\u4f17\u53f7\"\/>--><img decoding=\"async\" src=\"https:\/\/saas.51autoparts.cn\/api\/admin\/sys-file\/oss\/file?fileName=84db51f8561e448f9a4fda2eff0811f9.jpg\" alt=\"\u4e1a\u4f59\u8349\u516c\u4f17\u53f7\"\/><\/p><p>\u6700\u540e\uff0c\u6b22\u8fce\u5173\u6ce8\u6211\u7684\u4e2a\u4eba\u5fae\u4fe1\u516c\u4f17\u53f7\uff1a\u4e1a\u4f59\u8349\uff08yyucao\uff09\uff01<b>\u53ef\u52a0\u4f5c\u8005\u5fae\u4fe1\u53f7\uff1a<font color=\"red\">xttblog2<\/font>\u3002\u5907\u6ce8\uff1a\u201c1\u201d\uff0c\u6dfb\u52a0\u535a\u4e3b\u5fae\u4fe1\u62c9\u4f60\u8fdb\u5fae\u4fe1\u7fa4\u3002\u5907\u6ce8\u9519\u8bef\u4e0d\u4f1a\u540c\u610f\u597d\u53cb\u7533\u8bf7\u3002<\/b>\u518d\u6b21\u611f\u8c22\u60a8\u7684\u5173\u6ce8\uff01\u540e\u7eed\u6709\u7cbe\u5f69\u5185\u5bb9\u4f1a\u7b2c\u4e00\u65f6\u95f4\u53d1\u7ed9\u60a8\uff01\u539f\u521b\u6587\u7ae0\u6295\u7a3f\u8bf7\u53d1\u9001\u81f3532009913@qq.com\u90ae\u7bb1\u3002\u5546\u52a1\u5408\u4f5c\u4e5f\u53ef\u6dfb\u52a0\u4f5c\u8005\u5fae\u4fe1\u8fdb\u884c\u8054\u7cfb\uff01<\/p><p>\u672c\u6587\u539f\u6587\u51fa\u5904\uff1a<a href=\"https:\/\/www.xttblog.com\">\u4e1a\u4f59\u8349<\/a>\uff1a &raquo; <a href=\"https:\/\/www.xttblog.com\/?p=5090\">\u9762\u8bd5\u5fc5\u4f1a\u7684IO\u3001NIO\u3001AIO\u3001BIO\u4ee5\u53ca\u591a\u8def\u590d\u7528<\/a><\/p><!-- <div class=\"bd-reward-stl\"><button id=\"bdRewardBtn\"><span><\/span><\/button><\/div> -->","protected":false},"excerpt":{"rendered":"<p>\u5728\u7f51\u7edc\u7684\u521d\u671f\uff0c\u7f51\u6c11\u5f88\u5c11\uff0c\u670d\u52a1\u5668\u5b8c\u5168\u65e0\u538b\u529b\uff0c\u90a3\u65f6\u7684\u6280\u672f\u4e5f\u6ca1\u6709\u73b0\u5728\u5148\u8fdb\uff0c\u901a\u5e38\u7528\u4e00\u4e2a\u7ebf\u7a0b\u6765\u5168\u7a0b\u8ddf\u8e2a\u5904\u7406\u4e00\u4e2a\u8bf7\u6c42\u3002\u56e0\u4e3a [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[899,1656,252,62,410],"class_list":["post-5090","post","type-post","status-publish","format-standard","hentry","category-java","tag-io","tag-netty","tag-nio","tag-62","tag-410"],"_links":{"self":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts\/5090","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5090"}],"version-history":[{"count":1,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts\/5090\/revisions"}],"predecessor-version":[{"id":5091,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts\/5090\/revisions\/5091"}],"wp:attachment":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}