zoukankan      html  css  js  c++  java
  • 伪异步IO

    针对传统的BIO编程,当客户端数量一直增加的情况下,可能会导致服务器直接奔溃掉,进而出现了一种伪异步IO的线程方式。

    先看一下代码:

    看一下server端的代码:

    其中使用了自定义的一个线程池HandlerExecutorPool,下面看一下这个线程池的实现

    代码很简单,是一个有界队列的自定义线程池,

    serverHandler和Client的代码和BIO的代码一样,没做任何的修改。

    运行的结果也是一致的,我这边没有模拟多个客户端同时请求,有兴趣的,可以去尝试一下,这个server会一直处于监听的状态。

     采用线程池和任务队列可以实现一种伪异步的IO通信框架。

    我们学过连接池的使用和队列的使用,其实就是将客户端的socket封装成一个task任务(实现runnable接口的类)然后投递到线程池中去,配置相应的队列进行实现。

    在JDK1.5之前,没有出NIO的时候,都是用这种方式去实现的。 

  • 相关阅读:
    VIM的强大功能
    BigDecimal.ROUND_HALF_XXX的各种用法
    拒绝服务攻击
    浅谈(接口)测试注意事项四
    jmeter 与 java http
    Xms Xmx PermSize MaxPermSize 区别
    Jquery过滤器
    JQ工具函数运用
    C#扩展方法
    LINQ TO XML基础
  • 原文地址:https://www.cnblogs.com/shmilyToHu/p/6634237.html
Copyright © 2011-2022 走看看