Java中各种常见的生命周期

本文详细介绍了Java中Spring Bean、Servlet以及类的生命周期,包括初始化、服务和销毁等关键阶段。同时,也探讨了线程的生命周期,从新建到运行、阻塞再到结束的各个状态变化。通过对这些生命周期的理解,开发者可以更好地管理和控制程序的执行流程。
摘要由CSDN通过智能技术生成

Java中各种常见的生命周期

1.Spring bean的生命周期?

​ 1、Spring 容器根据配置中的 bean 定义中实例化 bean。

​ 2、Spring 使用依赖注入填充所有属性,如 bean 中所定义的配置。

​ 3、如果 bean 实现 BeanNameAware 接口,则工厂通过传递 bean 的 ID 来调用 setBeanName()。

​ 4、如果 bean 实现 BeanFactoryAware 接口,工厂通过传递自身的实例来调用 setBeanFactory()。

​ 5、如果存在与 bean 关联的任何 BeanPostProcessors,则调用 preProcessBeforeInitialization() 方法。

​ 6、如果为 bean 指定了 init 方法( 的 init-method 属性),那么将调用它。

​ 7、最后,如果存在与 bean 关联的任何 BeanPostProcessors,则将调用 postProcessAfterInitialization() 方法。

​ 8、如果 bean 实现 DisposableBean 接口,当 spring 容器关闭时,会调用 destory()。

​ 9、如果为 bean 指定了 destroy 方法( 的 destroy-method 属性),那么将调用它。

2.servlet的生命周期?

Servlet生命周期可以分成四个阶段:加载和实例化、初始化、服务、销毁。

具体如下:

  1. 当客户第一次请求时,首先判断是否存在Servlet对象,若不存在,则由Web容器创建对象,
  2. 而后调用init()方法对其初始化,此初始化方法在整个Servlet生命周期中只调用一次。

3. 完成Servlet对象的创建和实例化之后,Web容器会调用Servlet对象的service()方法来处理请求。

  1. 当Web容器关闭或者Servlet对象要从容器中被删除时,会自动调用destory()方法。
3.Java中类的生命周期是什么?

​ 1. 加载,查找并加载类的二进制数据,在Java堆中也创建一个java.lang.Class类的对象

​ 2. 连接,连接又包含三块内容:验证、准备、初始化。 1)验证,文件格式、元数据、字节码、符号引用验证; 2)准备,为类的静态变量分配内存,并将其初始化为默认值; 3)解析,把类中的符号引用转换为直接引用

  1. 初始化,为类的静态变量赋予正确的初始值
  2. 使用,new出对象程序中使用
  3. 卸载,执行垃圾回收
4. 线程的生命周期?

​ 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。 在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞 (Blocked)和死亡(Dead)5 种状态。尤其是当线程启动以后,它不可能一直"霸占"着 CPU 独自 运行,所以 CPU 需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换

这5种状态如下:

(1)新建(New):创建后尚未启动的线程处于这种状态

(2)运行(Runable):Runable包括了操作系统线程状态的Running和Ready,也就是处于此状态的线程有可能正在执行,也有可能正在等待着CPU为它分配执行时间。

(3)等待(Wating):处于这种状态的线程不会被分配CPU执行时间。等待状态又分为无限期等待和有限期等待,处于无限期等待的线程需要被其他线程显示地唤醒,没有设置Timeout参数的Object.wait()、没有设置Timeout参数的Thread.join()方法都会使线程进入无限期等待状态;有限期等待状态无须等待被其他线程显示地唤醒,在一定时间之后它们会由系统自动唤醒,Thread.sleep()、设置了Timeout参数的Object.wait()、设置了Timeout参数的Thread.join()方法都会使线程进入有限期等待状态。

(4)阻塞(Blocked):线程被阻塞了,“阻塞状态”与”等待状态“的区别是:”阻塞状态“在等待着获取到一个排他锁,这个时间将在另外一个线程放弃这个锁的时候发生;而”等待状态“则是在等待一段时间或者唤醒动作的发生。在程序等待进入同步区域的时候,线程将进入这种状态。

(5)结束(Terminated):已终止线程的线程状态,线程已经结束执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值