Java实现生命周期管理机制

Java实现生命周期管理机制

ID:42575738

大小:42.42 KB

页数:19页

时间:2019-09-18

Java实现生命周期管理机制_第1页
Java实现生命周期管理机制_第2页
Java实现生命周期管理机制_第3页
Java实现生命周期管理机制_第4页
Java实现生命周期管理机制_第5页
资源描述:

《Java实现生命周期管理机制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、最近一直在研究某个国产开源的MySQL数据库中间件,拉下其最新版的代码到eclipse后,启动起来,然后做各种测试和代码追踪;用完想要关闭它时,拉出它的STOP类想要运行时,发现这个类里赫然只写以下几行代码,于是我感觉瞬间受到了很多伤害。publicstaticvoidmain(String[]args){System.out.println(newDate()+",servershutdown!");}这个中间件启动和运行的时候,开启了监听,启动着许多线程在跑着,并且有许多socket连接。但是并没有找到一个优雅的方式将其关闭。于是无奈之下,我只能去点eclipse的心碎

2、小红点,强行停掉VM。如果是一个架构良好,模块化清晰的软件,特别是Server类的软件,拥有一套生命周期管理机制是非常重要的。不仅可以管理各个模块的生命周期,也可以在启停整个软件的时候更优雅,不会漏掉任何资源。生命周期机制简易实现生命周期状态一个模块的生命周期状态一般有以下几个:新生->初始化中->初始化完成->启动中->启动完成->正在暂停->已经暂停->正在恢复->已经恢复->正在销毁->已经销毁其中,任何一个状态之间的转化如果失败,那么就会进入另外一种状态:失败。为此,可以用一个枚举类来枚举出这几个状态,如下所示:publicenumLifecycleState{NE

3、W,//新生INITIALIZING,INITIALIZED,//初始化STARTING,STARTED,//启动SUSPENDING,SUSPENDED,//暂停RESUMING,RESUMED,//恢复DESTROYING,DESTROYED,//销毁FAILED;//失败}接口生命周期中的各种行为规范,也需要一个接口来定义,如下所示:publicinterfaceILifecycle{/***初始化**@throwsLifecycleException*/publicvoidinit()throwsLifecycleException;/***启动**@throwsL

4、ifecycleException*/publicvoidstart()throwsLifecycleException;/***暂停**@throwsLifecycleException*/publicvoidsuspend()throwsLifecycleException;/***恢复**@throwsLifecycleException*/publicvoidresume()throwsLifecycleException;/***销毁**@throwsLifecycleException*/publicvoiddestroy()throwsLifecycleExc

5、eption;/***添加生命周期监听器**@paramlistener*/publicvoidaddLifecycleListener(ILifecycleListenerlistener);/***删除生命周期监听器**@paramlistener*/publicvoidremoveLifecycleListener(ILifecycleListenerlistener);}发生生命周期状态转化时,可能需要触发对某类事件感兴趣的监听者,因此ILifeCycle也定义了两个方法可以添加和移除监听者。分别是:publicvoidaddLifecycleListener(IL

6、ifecycleListenerlistener);和 publicvoidremoveLifecycleListener(ILifecycleListenerlistener);监听者也由一个接口来定义其行为规范,如下所示:publicinterfaceILifecycleListener{/***对生命周期事件进行处理**@paramevent生命周期事件*/publicvoidlifecycleEvent(LifecycleEventevent);}生命周期事件由LifecycleEvent来表示,如下所示:publicfinalclassLifecycleEvent

7、{privateLifecycleStatestate;publicLifecycleEvent(LifecycleStatestate){this.state=state;}/***@returnthestate*/publicLifecycleStategetState(){returnstate;}}骨架实现有了ILifeCycle接口以后,任何实现了这个接口的类将会被作为一个生命周期管理对象,这个类可以是一个socket监听服务,也可以代表一个特定的模块,等等。那我们是不是只要实现ILifeCycle就可以

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。