- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Mina2.0框架源码剖析(二)
/phinecos/archive/2008/12/03/1347052.html上一篇介绍了几个核心的接口,这一篇主要介绍实现这些接口的抽象基类。首先是实现IoService接口的AbstractIoService类。它包含了一个Executor来处理到来的事件。每个AbstractIoService都一个AtomicInteger类型的id号,确保每个id的唯一性。它内部的Executor可以选择是从外部传递进构造函数中,也可以在实例内部自行构造,若是后者,则它将是ThreadPoolExecutor类的一个实例,即是Executor线程池中的一员。代码如下:?if?(executor?==?null)??{?this.executor?=?Executors.newCachedThreadPool();?createdExecutor?=?true;?}??else??{?this.executor?=?executor;?createdExecutor?=?false;?} 其中有一个IdleStatusChecker成员,它用来对服务的空闲状态进行检查,在一个服务激活时会将服务纳入到检查名单中,而在服务失效时会将服务从名单中剔除。会单独开一个线程进行具体的空闲检查,这是通过下面这个线程类来负责的:private?class?NotifyingTaskImpl?implements?NotifyingTask?{?private?volatile?boolean?cancelled;//取消检查标志?private?volatile?Thread?thread;?public?void?run(){?thread?=?Thread.currentThread();?try?{?while?(!cancelled)?{?//每隔1秒检查一次空闲状态?long?currentTime?=?System.currentTimeMillis();?notifyServices(currentTime);?notifySessions(currentTime);?try?{?Thread.sleep(1000);?}?catch?(InterruptedException?e)?{?//?will?exit?the?loop?if?interrupted?from?interrupt()?}?}?}?Finally?{?thread?=?null;?}?}}具体的空闲检查代码如下,超过能容忍的最大空闲时间,就会fire出SessionIdle事件,上文也说过空闲有三种类型:读端空,写端空,双端空。notifyIdleSession1(s,?currentTime,?s.getConfig().getIdleTimeInMillis(IdleStatus.BOTH_IDLE),IdleStatus.BOTH_IDLE,Math.max(s.getLastIoTime(),s.getLastIdleTime(IdleStatus.BOTH_IDLE)));?private?static?void?notifyIdleSession1(?AbstractIoSession?session,?long?currentTime,?long?idleTime,?IdleStatus?status,?long?lastIoTime)?{?if?(idleTime??0??lastIoTime?!=?0??currentTime?-?lastIoTime?=?idleTime)?{?session.getFilterChain().fireSessionIdle(status);?}}?在释放资源的方法时,首先去获取释放锁disposalLock才行,然后具体的释放动作是通过dispose0完成的,接着取消掉空闲检查线程,此外,若线程是内部创建的线程池中的一员,则通过线程池去关闭线程。?public?final?void?dispose()?{?IoFuture?disposalFuture;?synchronized?(disposalLock)?{//获取释放锁?disposalFuture?=?this.disposalFuture;?if?(!disposing)?{?disposing?=?true;?try?{?this.disposalFuture?=?disposalFuture?=?dispose0();//具体释放动作?}?catch?(Exception?e)?{?ExceptionMonitor.getInstance().exceptionCaught(e);?}?finally?{?if?(disposalFutu
您可能关注的文档
- 初中词法部分.doc
- 综合教程 第四册unit8.doc
- 美国大学简介资料.docx
- 专业术语之国际关系.doc
- 2016银行招聘英语部分专项练习(一).doc
- 翻译硕士名词解释词条.docx
- 20个必威体育精装版jQuery插件.doc
- 一位清华大学学生的完美学习建议.doc
- 研究生英语应用教程(第二册)完整版课后翻译unit_1-8单元.doc
- 百年战争与玫瑰战争的异同(作文).doc
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)