java架构师培训-多线程的生命周期

任何对象都有生命周期,线程也不例外。它也有自己的生命周期。线程的整个生命周期分为六个阶段,即新状态(New),可运行状态(Runnable),运行状态(Running),阻塞状态(Blocked),等待状态(Waiting)和运行状态。死状态(已终止)。线程的不同状态指示线程的当前活动(在某些地方,等待状态分为两种类型,并添加了定时等待Timed-Waiting)。

下面对线程生命周期中的六种状态进行详细说明。

1.新建状态(New)

创建一个线程对象后,该线程对象就处于新建状态,此时它不能运行,和其它Java对象一样,仅仅由Java虚拟机为其分配了内存,没有表现出任何线程的动态特征。

2.可运行状态(Runnable)

当线程对象调用了start()方法后,该线程就进入可运行状态。处于可运行状态的线程位于可运行池中,此时它只是具备了运行的条件,能否获得CPU的使用权开始运行,还需要等待系统的调度。

3.运行状态(Running)

如果处于可运行状态的线程获得使用CPU的权利并开始在run()方法中执行线程执行主体,则该线程处于运行状态。当线程启动时,它不可能一直处于运行状态(除非其线程执行主体足够短以至于可以立即结束),系统将为每个线程分配一小段时间来处理任务。随着时间的流逝,线程将用完,系统将剥夺该线程占用的CPU资源,从而使其他线程有机会执行。应该注意的是,只有处于可运行状态的线程才能过渡到运行状态。

4.阻塞状态(Blocked)和等待状态(Waiting)

如果线程由于某些原因放弃了CPU的的使用权,暂时停止运行,此线程就进入了阻塞或者等待状态,阻塞或者等待状态都是由运行状态转换而来的。下面列举出线程进入阻塞状态或等待状态的原因。

线程进入阻塞的原因:

l线程试图获取某个对象的同步锁,而该锁被其它线程持有

l当线程调用了一个阻塞式的IO方法

线程进入等待状态原因:

l线程调用了某个对象的wait()方法

l线程调用了Thread的sleep(longmillis)方法

l线程调用了另一个线程的join()方法

当执行线程进入阻塞或等待状态时,处于可运行状态的其他线程可以获得执行的机会。被阻塞或正在等待的线程将在适当的时间重新进入可运行状态,以等待系统进行调度。下面列出了线程从阻塞状态或等待状态到可运行状态的时间。

线程由阻塞状态进入可运行状态的时机:

l线程成功地获取了某个对象的同步锁

l阻塞式的IO方法已经返回

线程由等待状态进入可运行状态的时机:

l其它线程调用了某个对象的notify()或者notifyAll()方法

lThread的sleep(longmillis)方法经过了指定的时间

l调用join()方法的线程执行完毕

需要注意的是,线程从阻塞或者等待状态只能进入可运行状态,而不能直接进入运行状态,也就是说,结束阻塞和等待的线程需要重新进入可运行池中,等待系统的调度。

5.死亡状态(Terminated)

线程的run()方法正常执行完毕或者线程抛出一个未捕获的异常(Exception)、错误(Error),线程就进入死亡状态。一旦进入死亡状态,线程将不再拥有运行的资格,也不能再转换到其它的状态。

java架构师培训

推荐阅读:java架构师培训:java最佳测试框架JBehave的基本介绍

如果你想了解更多关于java架构师的专业知识,可以加入JAVA架构师交流群:1160405674,里面都是同行,有资源分享包括但不限于(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。欢迎一到五年的工程师加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

提供了基于BP(Back Propagation)神经网络结合PID(比例-积分-微分)控制策略的Simulink仿真模型。该模型旨在实现对杨艺所著论文《基于S函数的BP神经网络PID控制器及Simulink仿真》中的理论进行实践验证。在Matlab 2016b环境下开发,经过测试,确保能够正常运行,适合学习和研究神经网络在控制系统中的应用。 特点 集成BP神经网络:模型中集成了BP神经网络用于提升PID控制器的性能,使之能更好地适应复杂控制环境。 PID控制优化:利用神经网络的自学习能力,对传统的PID控制算法进行了智能调整,提高控制精度和稳定性。 S函数应用:展示了如何在Simulink中通过S函数嵌入MATLAB代码,实现BP神经网络的定制化逻辑。 兼容性说明:虽然开发于Matlab 2016b,但理论上兼容后续版本,可能会需要调整少量配置以适配不同版本的Matlab。 使用指南 环境要求:确保你的电脑上安装有Matlab 2016b或更高版本。 模型加载: 下载本仓库到本地。 在Matlab中打开.slx文件。 运行仿真: 调整模型参数前,请先熟悉各模块功能和输入输出设置。 运行整个模型,观察控制效果。 参数调整: 用户可以自由调节神经网络的层数、节点数以及PID控制器的参数,探索不同的控制性能。 学习和修改: 通过阅读模型中的注释和查阅相关文献,加深对BP神经网络与PID控制结合的理解。 如需修改S函数内的MATLAB代码,建议有一定的MATLAB编程基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值