java中常见的几种生命周期

本文详细阐述了软件生命周期的不同阶段,包括Application、Session、Servlet、Maven、线程以及Bean的生命周期。同时,讨论了Vue.js的八个关键生命周期钩子,从beforeCreate到destroyed,深入理解组件的状态变化。此外,还提及了Java线程的五种状态和Bean的初始化与销毁过程。
摘要由CSDN通过智能技术生成

生命周期

Application

从项目开始到项目结束

Session

用户第一次访问时开始,用户长时间不访问则结束

Servlet

init 初始化 执行一次

service 相应请求 执行多次

destroy 销毁 执行一次

Maven

clear 清理

complier 编译

test 测试

pakage 打包

install 安装

deloy 发布

线程

在Java中,线程的声明周期有新建状态,就绪状态,运行状态,阻塞状态和终止状态等五个状态

终止状态是线程生命周期的最后一个阶段。线程终止主要有两个原因:

a.线程完成全部工作,正常结束运行;

b.线程被强制终止运行。如:通过执行stop()方法或destroy()方法来终止一个线程。

新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();

就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;

运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就     绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;

阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才 有机会再次被CPU调用以进入到运行状态。根据阻塞产生的原因不同,阻塞状态又可以分为三种:

1.等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;

2.同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;

3.其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

注:使线程进入阻塞状态的操作有如下几种:

a.调用sleep()方法使线程进入休眠状态;

b.调用suspend()方法使线程进入挂起状态;

c.调用wait()方法,进入等待状态;

d.等待输入输出操作。

死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。

简单的来说,一个Bean的生命周期分为四个阶段:

1、 实例化(Instantiation)

2、 属性设置(populate)

3、 初始化(Initialization)

4、 销毁(Destruction)

bean 实例的生命周期如下:

1、为了演示spring的生命周期,首先必须要加入spring的相关包。

2、新建一个SpringBoy类 实现BeanNameAware, BeanFactoryAware, InitializingBean, DisposableBean

要注意加入相关的包。新建一个processor类,用于处理bean,叫作bean处理器,在xml中作如下配置:<bean class="zpx.life.Processor"/>

3、分别实现它们的方法。并在方法中加入必须的信息,以便后面理解与观察。

4、在配置文件中配置springboy。指定初始化方法与销毁方法。

vue

vue的八大生命周期状态:1、beforeCreate;2、created;3、beforeMount;4、mounted;5、beforeUpdate;6、updated;7、beforeDestroy;8、destroyed。

1、beforeCreate(创建前):vue实例初始化之前调用

此阶段为实例初始化之后,此时的数据观察和事件配置都还没有准备好,而此时的实例中的data和el还是underfined状态,不可用的,dom元素也未加载,此时使用html片段代码我们加上ref属性,用于获取DOM元素的操作会报错,详细效果请使用代码测试。

2、created(创建后):vue实例初始化之后调用

beforeCreate之后紧接着的钩子就是创建完毕created,此时我们能读取到data的值,但是DOM还没有生成,所以属性el还是不存在的,dom元素也未加载。

3、beforeMount(载入前):挂载到DOM树之前调用

此时的$el成功关联到我们指定的DOM节点,但是此时的DOM元素还未加载,如果此时在DOM元素中绑定数据使用{{name}}后里边的name不能成功地渲染出我们data中的数据

4、mounted(载入后):挂载到DOM树之后调用

挂载完毕阶段,到了这个阶段数据就会被成功渲染出来。DOM元素也加载出来了,html片段代码我们加上ref属性,可以获取DOM元素。

5、beforeUpdate(更新前):数据更新之前调用

当修改Vue实例的data时,Vue就会自动帮我们更新渲染视图,在这个过程中,Vue提供了beforeUpdate的钩子给我们,在检测到我们要修改数据的时候,更新渲染视图之前就会触发钩子beforeUpdate。html片段代码我们加上ref属性,用于获取DOM元素。Dom元素上的数据还没改变。

6、updated(更新后):数据更新之后调用

此阶段为更新渲染视图之后,此时再读取视图上的内容,已经是最新的内容。 此时加载的DOM元素上的数据更新了。

7、beforeDestroy(销毁前):vue实例销毁之前调用

调用实例的destroy()方法可以销毁当前的组件,在销毁之前,会触发beforeDestroy钩子。

8、destroyed(销毁后):vue实例销毁之后调用

成功销毁之后,会触发destroyed钩子,此时该实例与其他实例的关联已经被清除,它与视图之间也被解绑,此时再修改name的值,试图不在更新,说明实例成功被销毁了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值