BIO NIO AIO理解

同步IO Java自己处理IO读写
异步IO Java将IO读写委托给OS处理

阻塞 Java调用时阻塞 则等待直到IO读写完成后返回
非阻塞 Java调用时阻塞 则马上返回 IO事件分发器轮询查询为可读写状态时继续IO读写

  1. 同步并阻塞&异步阻塞 BIO
    网购付款完毕时 只能等待快递员送货 等待货物到后跑去取快递 无法处理其它事情

    一个连接一个线程 客户端有连接请求时服务器端就创建一个线程进行处理 但连接不做任何操作时会造成不必要的线程资源浪费可通过线程池机制改善

    BIO适用连接数目比较小且固定的架构 对服务器资源要求比较高 并发局限于应用中 程序直观

  2. 同步非阻塞 NIO
    网购付款完毕时 用手机反复查询物流 等待货物到后跑去取快递 可同时处理其它事情

    一个请求一个线程 客户端有连接请求会先注册到多路复用器上 多路复用器轮询到连接有I/O请求时才启动一个线程进行处理

    NIO适用连接数目多且连接比较短的架构 并发局限于应用中 JDK1.4开始支持 程序复杂不直观

  3. 异步非阻塞 AIO
    网购付款完毕时 自动送货上门 不用自己去取货 可处理其它事情

    一个有效请求一个线程 客户端的I/O请求由OS处理完成后通知服务器应用去启动线程进行处理 需要操作系统支持

    AIO适用连接数目多且连接比较长的架构 调用OS进行并发操作 JDK7开始支持 程序复杂不直观

Tomcat运行模式

BIO blocking I/ONIO non-blocking I/OAPR Apache Portable Runtime
同步阻塞式同步非阻塞式 异步阻塞异步非阻塞
java.io包及其子包java.nio包及其子包需要安装外部程序
传统读写操作基于缓冲区 多路复用JNI调用server支持库
Tomcat默认使用Tomcat修改配置需安装apr和native
JDK1.4后提供JDK7后提供Apache提供

使Tomcat以NIO方式运行 配置apache-tomcat/conf/server.xml

<Connector connectionTimeout="20000" port="8080"
	protocol="HTTP/1.1"
	redirectPort="8443"/>

修改后

<Connector connectionTimeout="20000" port="8080"
	protocol="org.apache.coyote.http11.Http11NioProtocol"
	redirectPort="8443"/>

使Tomcat以APR方式运行

Windows下修改

# 下载native.dll 地址http://tomcat.apache.org/download-native.cgi
# 复制32位或64位tcnative-1.dll到tomcat\bin
<Connector connectionTimeout="20000" port="8080"
	protocol="org.apache.coyote.http11.Http11AprProtocol"
	redirectPort="8443"/>
# 重启tomcat即可

Linux下修改

# 下载apr和native并配置server.xml
下载地址:http://apr.apache.org/download.cgi
# 可直接点击下载
下载apr:http://mirrors.cnnic.cn/apache//apr/apr-1.6.5.tar.gz
下载apr-util:http://mirrors.cnnic.cn/apache//apr/apr-util-1.6.1.tar.gz
下载apr-iconv:http://mirrors.cnnic.cn/apache//apr/apr-iconv-1.2.2.tar.gz
apr-1.6.5.tar.gz
apr-util-1.6.1.tar.gz
apr-iconv-1.2.2.tar.gz
# 在tomcat/bin下
tomcat-native.tar.gz
[root@lilei ~]# tar zxvf apr-1.6.5.tar.gz
[root@lilei ~]# tar zxvf apr-util-1.6.1.tar.gz
[root@lilei ~]# tar zxvf apr-iconv-1.2.2.tar.gz 

[root@lilei ~]# cd apr-1.6.5
[root@lilei ~]# ./configure --prefix=/usr/local/apr-1.6.5  && make && make install

[root@lilei ~]# cd apr-iconv-1.2.2
[root@lilei ~]# ./configure --prefix=/usr/local/apr-iconv-1.2.2 --with-apr=/usr/local/apr-1.6.5   && make && make install

[root@lilei ~]# cd apr-util-1.6.1
[root@lilei ~]# ./configure --prefix=/usr/local/apr-util-1.6.1  --with-apr=/usr/local/apr-1.6.5  --with-iconv=/usr/local/apr-iconv-1.2.2  && make && make install

[root@lilei ~]# cd /usr/local/tomcat-7.0.67/bin/
[root@lilei bin]# tar zxvf tomcat-native.tar.gz
[root@lilei bin]# cd tomcat-native-1.1.33-src/jni/native/
# --with-apr apr的安装目录 安装apr自动生成的 不用修改 --with-java jdk目录
[root@lilei native]# ./configure --with-apr=/usr/local/apr-1.6.5 --with-java=/usr/local/jdk1.8.0_162
[root@lilei native]# make && make install
# 配置环境变量
[root@lilei native]# vim /etc/profile# 加入如下配置
     export LD_LIBRARY_PATH=/usr/local/apr-1.6.5/lib
[root@lilei native]# source /etc/profile

[root@node3 conf]# tailf  ../logs/catalina.out
# 解压并安装
tar -zxvf apr-1.6.5.tar.gz
cd apr-1.6.5
./configure
make && make install

tar -zxvf tomcat-native.tar.gz
cd tomcat-native-1.2.27-src/native/
./configure --with-apr=/usr/local/apr --with-java-home=/usr/local/java/jdk1.8.0_162
make && make install
--with-apr apr的安装目录 安装apr自动生成的 不用修改
--with-java-home Jdk目录

#配置环境变量
vim /etc/profile 添加如下配置
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

#重载配置文件
source /etc/profile

修改server.xml

<Connector connectionTimeout="20000" port="8080"
	protocol="org.apache.coyote.http11.Http11AprProtocol"
	redirectPort="8443"/>

BIO模式运行>>>INFO: Initializing ProtocolHandler [“http-bio-8080”]
NIO模式运行>>>INFO: Initializing ProtocolHandler [“http-nio-8080”]
APR模式运行>>>INFO: Initializing ProtocolHandler [“http-apr-8080”]

转载于:https://www.cnblogs.com/setlilei/p/10629424.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值