j**a中的nio,bio,aio分别是什么意思

付. 2024-06-28 12:09:43
最佳回答
一、 reactor and proactorio读写时,多路复用机制都会依赖对一个事件多路分离器,负责把源事件的io 事件分离出来,分别到相应的read/write事件分离器。涉及到事件分离器的两种模式分别就是 reactor和proactor,reactor是基于同步io的,proactor是基于异步io的。在reactor模式中,事件分离者等待某个事件或者可应用或个操作的状态发生(比如文件描述符可读写,或者是socket可读写),事件分离者就把这个事件传给事先注册的事件处理函数或者回调函数,由后者来做实际的读写操作。在proactor模式中,事件处理者(或者代由事件分离者发起)直接发起一个异步读写操作(相当于请求),而实际的工作是由操作系统来完成的。发起时,需要提供的参数包括用于存放读到数据的缓存区,读的数据大小,或者用于存放外发数据的缓存区,以及这个请求完后的回调函数等信息。事件分离者得知了这个请求,它默默等待这个请求的完成,然后转发完成事件给相应的事件处理者或者回调。举例来说,在windows上事件处理者投递了一个异步io操作(称有 overlapped的技术),事件分离者等iocompletion事件完成. 这种异步模式的典型实现是基于操作系统底层异步api的,所以我们可称之为“系统级别”的或者“真正意义上”的异步,因为具体的读写是由操作系统代劳的。举个例子,将有助于理解reactor与proactor二者的差异,以读操作为例(类操作类似)。在reactor中实现读:- 注册读就绪事件和相应的事件处理器- 事件分离器等待事件- 事件到来,激活分离器,分离器调用事件对应的处理器。- 事件处理器完成实际的读操作,处理读到的数据,注册新的事件,然后返还控制权。与如下proactor(真异步)中的读过程比较:- 处理器发起异步读操作(注意:操作系统必须支持异步io)。在这种情况下,处理器无视io就绪事件,它关注的是完成事件。- 事件分离器等待操作完成事件- 在分离器等待过程中,操作系统利用并行的内核线程执行实际的读操作,并将结果数据存入用户自定义缓冲区,最后通知事件分离器读操作完成。- 事件分离器呼唤处理器。- 事件处理器处理用户自定义缓冲区中的数据,然后启动一个新的异步操作,并将控制权返回事件分离器。可以看出,两个模式的相同点,都是对某个io事件的事件通知(即告诉某个模块,这个io操作可以进行或已经完成)。在结构上,两者也有相同点:demultiplexor负责提交io操作(异步)、查询设备是否可操作(同步),然后当条件满足时,就回调handler;不同点在于,异步情况下(proactor),当回调handler时,表示io操作已经完成;同步情况下(reactor),回调handler时,表示io设备可以进行某个操作(can read or can write),handler这个时候开始提交操作。二、bio、nio、aionio通常采用reactor模式,aio通常采用proactor模式。aio简化了程序的编写,stream的读取和写入都有os来完成,不需要像nio那样子遍历selector。windows基于iocp实现aio,linux只有eppoll模拟实现了aio。j**a7之前的jdk只支持nio和bio,从7开始支持aio。4种通信方式:tcp/ip+bio, tcp/ip+nio, udp/ip+bio, udp/ip+nio。tcp/ip+bio、socket和serversocket实现,serversocket实现server端端口**,socket用于建立网络io连接。不适用于处理多个请求 1.生成socket会消耗过多的本地资源。2. socket连接的建立一般比较慢。bio情况下,能支持的连接数有限,一般都采取accept获取socket以后采用一个thread来处理,one connection one thread。无论连接是否有真正数据请求,都需要独占一个thread。可以通过设立socket池来一定程度上解决问题,但是使用池需要注意的问题是:1. 竞争等待比较多。 2. 需要控制好超时时间。tcp/ip+nio使用channel(socketchannel和serversocketchannel)和selector。server端通常由一个thread来**connect事件,另外多个thread来**读写事件。这样做的好处是这些连接只有在真是请求的时候才会创建thread来处理,one request one thread。这种方式在server端需要支持大量连接但这些连接同时发送请求的峰值不会很多的时候十分有效。udp/ip+biodatagramsocket和datagrampacket。datagramsocket负责**端口以及读写数据,datagrampacket作为数据流对象进行传输。udp/ip是无连接的,无法进行双向通信,除非双方都成为udp server。udp/ip+nio通过datagramchannel和bytebuffer实现。datagramchannel负责端口**及读写。bytebuffer负责数据流传输。如果要将消息发送到多台机器,如果为每个目标机器都建立一个连接的话,会有很大的网络流量压力。这时候可以使用基于udp/ip的multicast协议传输,j**a中可以通过multicastsocket和datagrampacket来实现。multicast一般多用于多台机器的状态同步,比如jgroups。srm, urgcp都是multicast的实现方式。ebay就采用srm来实现将数据从主数据库同步到各个搜索节点机器。 20210311
汇率兑换计算器

类似问答
  • macd中的12.26.9分别代表什么意思
    • 2024-06-28 06:31:43
    • 提问者: 未知
    个股一级指标: 1平滑异同平均线指标——macd macd指标又叫指数平滑异同移动平均线,是由查拉尔·阿佩尔(gerald apple)所创造的,是一种研判股票买卖时机、跟踪股价运行趋势的技术分析工具。 第一节 macd指标的原理和计算方法 一、macd指标的原理 macd指标是根据均线的构造原理,对股票价格的收盘价进行平滑处理,求出算术平均值以后再进行计算,是一种趋向类指标。 macd指标是运用...
  • 股市中的一分钟级别和五分钟级别都是什么意思
    • 2024-06-28 03:33:15
    • 提问者: 未知
    1/5分钟级别就是将1/5分钟内产生2113的开盘价5261、最高价、最低价、收4102盘价等4个指数点位或者1653股价进行合成。1分钟线和5分钟线都属于均线之一。移动平均线,原本的意思是移动平均,由于将其制作成线形,所以一般称之为移动平均线,简称均线。它是将某一段时间的收盘价之和除以该周期。...
  • 深城投&中城aio,aio是什么意思?
    • 2024-06-28 10:14:49
    • 提问者: 未知
    现在很多楼盘,像万科碧桂园,保利远洋,包括深城投&中城这样两个开发商联合做一个项目的,也算成了…
  • mba cdp分别是什么意思?
    • 2024-06-28 02:47:28
    • 提问者: 未知
    mba 英文全称为 master of business admin**tration,直译为工商管理硕士。cdp 逆势操作系统
  • 股市中的s 和b分别是什么意思
    • 2024-06-28 15:02:18
    • 提问者: 未知
    b(红色)外盘示买入,以卖出价成交易。卖出成交数量统计加盘。s(绿色)内盘:表示卖出买入价成交的交易,买入成交数量统计加入内盘。bs后面的数字表示投资者想要交易的数量。一般以手数表示。内盘:在成交量中以主动性叫卖价格成交的数量,所谓主动性叫卖,即是在实盘买卖中,卖方主动以低于或等于当前买一的价格挂单卖出股票时成交的数量,显示空方的总体实力。 外盘:在成交量中以主动性叫买价格成交的数量,所谓主动性叫...
  • “http_200”、“http_302”分别是什么意思?
    • 2024-06-28 23:02:43
    • 提问者: 未知
    1、“http_200”的意思是62616964757a686964616fe58685e5aeb931333363396362 成功处理了请求。2、“http_302”的意思是(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。1、http_xxx是超文本传输协议,http定义了信息如何被格式化、如何被传输...
  • j**a扩展是什么意思?
    • 2024-06-28 15:53:42
    • 提问者: 未知
    就是可以支持的j**a程序扩展,比较多用于手机。 j**a程式包括:应用程序、游戏、电子书等等  j**a是sun公司推出的一种编程语言。它是一种通过解释方式来执行的语言,语法规则和c++类似。同时,j**a也是一种跨**的程序设计语言。  j**a的编程应用可以说无处不在,从嵌入式设备到服务器都有。其中人们在浏览器中使用的“applet”(小应用程序)是用j**a语言编写的程序之一,用编译器将它...
  • j**a中api是什么意思
    • 2024-06-28 19:22:43
    • 提问者: 未知
    短信api(短信应用程序接口)其实是一组定义、程序及协议的集合,通过 api 接口实现计算机软件之间的相互通信。api 的一个主要功能是提供通用功能集。程序员通过使用 api 函数开发应用程序,从而可以避免编写无用程序,以减轻编程任务。 api 同时也是一种中间件,为各种不同**提供数据共享。
  • 无线j**a是什么意思,具体指什么?
    • 2024-06-28 08:16:30
    • 提问者: 未知
    主要指j2me
  • j**a jquery问题,如图,是什么意思?
    • 2024-06-28 23:58:52
    • 提问者: 未知
    这两个参数的名称可以修改,这两个参数只是在function内部使用,所以如果你改变参数名之后,在function内部也要做相应的修改。从你的这段代码中可以看出来,是要对<p></p>标签内的元素进行便利。index:就是遍历时使用的计数器,可以理解为数组下标,而这个数组就是p>的所有元素的集合 domele...
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。