当前位置: 首页 > news >正文

wap网站的开发去加网 wordpress

wap网站的开发,去加网 wordpress,请人做网站要多少,软件开发工具推荐Java多线程(3) 深入剖析Java线程的生命周期#xff0c;探秘JVM的线程状态#xff01; 线程的生命周期 Java 线程的生命周期主要包括五个阶段#xff1a;新建、就绪、运行、阻塞和销毁。 **新建#xff08;New#xff09;#xff1a;**线程对象通过 new 关键字创建…Java多线程(3) 深入剖析Java线程的生命周期探秘JVM的线程状态 线程的生命周期 Java 线程的生命周期主要包括五个阶段新建、就绪、运行、阻塞和销毁。 **新建New**线程对象通过 new 关键字创建但还未调用 start() 方法时线程处于新建状态。此时线程对象已经分配了内存空间但尚未启动执行。**就绪Runnable**线程对象调用 start() 方法后线程处于就绪状态。此时线程已经准备好执行但还没有获得 CPU 时间片。多个线程处于就绪状态时由 Java 虚拟机的线程调度器来决定哪个线程获得 CPU 时间片开始执行。**运行Running**当线程获得 CPU 时间片开始执行时线程处于运行状态。此时线程的 run() 方法正在被执行。**阻塞Blocked**在特定情况下线程可能会被暂时挂起进入阻塞状态。例如线程调用了 sleep() 方法、等待 I/O 操作、获得了某个对象的锁但没有获取到锁等。当阻塞状态的条件解除时线程会重新进入就绪状态等待获取 CPU 时间片继续执行。**销毁Terminated**线程执行完 run() 方法后或者调用了 stop() 方法线程将进入销毁状态。一旦线程进入了销毁状态就无法再恢复到其他状态。 Java 线程状态的分析 **在 Java 虚拟机JVM中线程的状态主要分为 new、runnable、blocked、waiting、timed_waiting和terminated 六种状态**让我们一一来了解 **new**当我们创建一个线程对象时线程就处于 new状态。此时线程对象已经被创建但还没有开始执行。**runnable**当线程调用 start() 方法后线程就进入了runnable状态。此时线程已经准备好执行但还没有获得 CPU 的执行时间片处于等待 CPU 调度的状态。**blocked**在线程执行过程中可能会因为等待锁资源而暂时无法继续执行此时线程就进入了 blocked状态。例如在多线程并发访问共享资源时如果一个线程已经持有了某个对象的锁其他线程就无法获取该锁进而被阻塞。**waiting**在某些情况下线程可能会主动调用 wait()方法进入 waiting 状态。例如线程等待某个条件的满足或者等待其他线程的通知。在 waiting 状态下线程会被挂起直到被其他线程唤醒。**timed_waiting**类似于waiting状态但是在timed_waiting 状态下线程会在一定的时间内等待。例如线程调用了 sleep() 方法、join() 方法或者等待某个锁的过程中会进入 timed_waiting 状态。一旦等待时间到达或者锁被释放线程会重新进入runnable 状态。**terminated**线程的任务执行完毕或者出现异常导致线程终止线程就进入了 terminated 状态。一旦线程进入 terminated 状态就无法再被启动和执行。 实际案例演示 为了更好地理解 Java 线程的生命周期让我们来看一个实际的电商项目案例通过简单的 Java 代码演示不同线程状态的变化。 假设我们有一个电商项目其中包含了商品库存管理和订单处理两个模块。商品库存管理模块负责更新商品库存数量而订单处理模块负责处理用户提交的订单。 在这个案例中我们可以创建两个线程分别模拟商品库存管理和订单处理两个模块的并发执行。 首先我们创建一个商品库存管理线程使用 synchronized关键字保证在修改库存数量时的线程安全性。 然后我们创建一个订单处理线程使用 Lock 和 Condition 来控制线程的阻塞和唤醒。 在主线程中我们创建并启动这两个线程并演示线程状态的变化。 在运行这段代码时我们可以观察到以下线程状态的变化 商品库存管理线程InventoryManagementThread的线程状态 **new**在调用 start() 方法创建线程对象后线程进入new状态表示线程对象已经被创建但尚未启动。**runnable**在调用 start() 方法后线程开始运行并进入 runnable 状态表示线程处于可运行状态但不一定正在执行。在这个案例中我们可以看到线程在运行时通过输出语句显示了商品库存数量的变化处于 runnable 状态。**terminated**当线程执行完 run() 方法中的代码或者调用了 stop() 方法后线程进入 terminated 状态表示线程执行完毕并终止。 订单处理线程OrderProcessingThread的线程状态 **new**在调用 start() 方法创建线程对象后线程进入new 状态表示线程对象已经被创建但尚未启动。**runnable**在调用 start() 方法后线程开始运行并进入 runnable 状态表示线程处于可运行状态但不一定正在执行。在这个案例中订单处理线程在订单未提交时通过调用 condition.await() 方法进入了阻塞状态处于 runnable 状态。**blocked**在订单未提交时订单处理线程通过调用condition.await() 方法进入了阻塞状态表示线程因为等待某个条件而被阻塞处于 blocked 状态。**runnable**当订单提交后订单处理线程通过调用condition.signal() 方法被唤醒并继续执行进入runnable 状态。**terminated**当线程执行完 run() 方法中的代码或者调用了 stop() 方法后线程进入 terminated 状态表示线程执行完毕并终止。 通过以上案例我们可以清楚地看到不同线程状态的转换包括 new、runnable、blocked、terminated 等状态。 总结 ated 状态表示线程执行完毕并终止。 通过以上案例我们可以清楚地看到不同线程状态的转换包括 new、runnable、blocked、terminated 等状态。 总结 **Java线程的生命周期包括新建、就绪、运行、阻塞和销毁五个阶段。根据JVM的源码分析线程的状态可以分为new、runnable、blocked、waiting、timed_waiting和terminated六种状态。**在实际项目中了解线程的生命周期和状态对于编写高效的多线程程序非常重要。合理地管理和控制线程的状态转换可以提高程序的并发性能和稳定性。
http://www.pierceye.com/news/695633/

相关文章:

  • 网站门户设计网站建设有没有做的必要
  • 建模师的就业前景整站优化工具
  • 微信公众号怎么做链接网站网站404 原因
  • 安卓手机做服务器网站网站设计时多页面切换时什么控件
  • 长沙正规网站建设价格网站推广怎么发外链
  • 专业版装修用什么网站做导航条深圳网站制作易捷网络
  • 哪个公司建设网站好手机网站维护费
  • 中山高端网站建设wordpress调用分类文章列表
  • 营销网站的专业性诊断评价和优化做视频网站需要什么资质
  • 河南广告制作公司网站西班牙语网站设计公司哪家好
  • 做业务一般要注册哪些网站wordpress prepare
  • wordpress 鼠标经过seo网站内容优化有哪些
  • 单页网站制作视频教程深圳有哪些软件外包公司
  • 嘉兴电子商务网站建设wordpress如何添加页面子目录
  • 教育在线网站怎样做直播seo网站推广怎样
  • 响应式的网站建设一个多少钱百度域名解析
  • 东莞做网站卓诚网络免费大数据分析网站
  • 网站用什么图片格式好seo学徒招聘
  • 地区网站建设网站用户反馈
  • 网站备案背景幕布下载成都最好的seo外包
  • 荆州 商务 网站建设郑州网站建设灵秀
  • 重庆市建筑工程信息官方网站注册号域名后如何建设公司网站
  • 江门网站建设junke100深圳小企业网站建设设计制作
  • 个人域名能做网站吗江苏外贸型网站制作
  • 文登区做网站的公司琴行网站开发学术论文
  • 嵌入式网站开发学习百度seo优化收费标准
  • 网站评价及优化分析报告湖南省邵阳建设局网站
  • 网站推广是做什么的深圳市住房建设与保障局官方网站
  • qq群推广网站lamp网站开发制作
  • ui网站界面设计广州省建设监理协会网站