谈谈各种生命周期如何理解

一 、Spring中Bean的生命周期

(一)一个springbean的生命周期总体来说五个阶段:

实例化 --> 属性填充 --> 初始化 --> 生存期–> 销毁

1.首先讲讲实例化Bean,客户端在请求一个尚未初始换的bean,容器会调用doCreateBean方法,用射的方式创建实例化一个bean。
2.实例化之后会进行属性填充,可以注入这个Bean依赖的其他的Bean
3.初始化操作有几个步骤进行处理:

(1)执行Aware接口
Spring会检测是否实现了XXaware接口,如BeanNameAware获取BeanName,实现BeanFactoryAware获取BeanFactory等
(2)执行BeanPostProcessor的前置处理方法,进行一些Bean的前置处理
(3)判断Bean是否实现了InitializingBean接口,如若实现, 则执行initailizingBean的afterPropertiesSet()初始化方法。
(4)执行用户自定义初始化方法
(5)执行BeanPostProcessor的后置处理方法,进行postProcessAfterinitialization

4.初始化完成则Bean创建完成可以正常使用。
5.当Bean经过垃圾回收等等处理无用之后,进行销毁操作。

(1) 首先判断Bean是否实现了DestructionAwareBeanPostProcessor接口,如果实现了,则会执行DestructionAwareBeanPostProcessor后置处理器的销毁回调方法
(2) 其次会判断Bean是否实现了DisposableBean接口,如果实现了将会调用其实现的destroy()方法
(3) 最后判断这个Bean是否配置了dlestroy-method等自定义的销毁方法,如果有的话,则会自动调用其配置的销毁方法;

了解以上有什么好处,可以对一些Bean初始化进行性能增强。

二、 线程的生命周期

(一) 一个线程的生命周期有五个阶段

创建 --> 就绪 --> 运行 --> 阻塞 --> 死亡

(1)创建就是线程对象进行初始化,在Java虚拟机中分配内存,注意此时线程仅是个对象。
(2)就绪是线程调用start方法后,线程处于等待cpu分配资源运行的状态,当进入就绪状态,Java虚拟机中会为其创建 方法调用栈和程序计数器,线程在Java虚拟机中运行。
(3) 运行就是当就绪的线程获得了cpu的资源时候,进入了运行状态,开始启用run方法。当就绪的线程获得了cpu资源分配,就会执行run方法。
当一个单核cpu只能同时执行一条命令,JVM中通过快速切换线程执行指令来达到多线程,这种切换的速度很快,一般感知不到,也就是并发的原理。为了切换不同线程还可以恢复正确的执行位置,需要用到独立程序计数器保证线程之间独立不受影响。
当一个线程在运行后,不能一直占有cpu,需要在执行中中断,保证其他线程也能获取到执行cpu的机会,具体的线程调度细节还是取决于底层平台的策略。
(4) 阻塞就是在线程运行状态中会因为不同原因变成阻塞状态

1.等待I/O流的输入输出
2.等待网络资源,即网速问题
3.调用sleep()方法,需要等sleep时间结束
4.调用wait()方法,需要调用notify()唤醒线程
5.其他线程执行join()方法,当前线程则会阻塞,需要等其他线程执行完。

(5) 死亡

1.run()或者call()方法执行完成,线程正常结束。
2.线程抛出未捕获的异常Exception或者Error
直接调用stop()方法,容易死锁,不用。

三、Servlet的生命周期

简述Servlet三个阶段

初始化–> 运行时 --> 销毁
在servlet接口中,有三个方法
init方法:负责初始化Servlet对象。在servlet容器初始化时调用。
service方法:负责响应客户的请求。
destroy方法:当Servlet对象退出生命周期时,负责释放占用的资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值