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

网站建设属于服务还是货物山东网络推广平台

网站建设属于服务还是货物,山东网络推广平台,百度收录情况查询,网站首页html代码在哪线程的生命周期是多线程编程的核心概念之一#xff0c;理解它能帮助你更好地控制线程行为#xff0c;避免常见的并发问题。本文结合流程图、生活化比喻和代码示例来详细解析。 一、线程生命周期全景图 二、六大状态详解#xff08;JVM视角#xff09; 1. 新建状态#x…线程的生命周期是多线程编程的核心概念之一理解它能帮助你更好地控制线程行为避免常见的并发问题。本文结合流程图、生活化比喻和代码示例来详细解析。 一、线程生命周期全景图 二、六大状态详解JVM视角 1. 新建状态New 定义线程对象已创建new Thread()但尚未调用start()方法。比喻 就像婴儿刚出生还未开始活动。代码Thread t new Thread(() - System.out.println(线程运行中)); // 新建状态2. 就绪状态Runnable 定义线程已启动调用start()正在JVM中运行但可能在等待操作系统分配CPU时间片。比喻 运动员站在起跑线已准备好但需等待裁判鸣枪。关键点 线程进入就绪队列由操作系统调度器决定何时执行。start()方法只能调用一次否则抛出IllegalThreadStateException。 代码t.start(); // 进入就绪状态等待CPU调度3. 运行状态Running 定义线程获得CPU时间片正在执行run()方法中的代码。比喻 运动员听到枪声开始奔跑。关键点 线程可能因时间片用完或主动放弃CPU而回到就绪状态。多核CPU系统中多个线程可同时处于运行状态。 4. 阻塞状态Blocked 定义线程等待获取锁如synchronized块时的状态。比喻 多人排队使用公共厕所当前厕所有人占用需等待。代码示例public class BlockedDemo {private static final Object LOCK new Object();public static void main(String[] args) {Thread t1 new Thread(() - {synchronized (LOCK) {try { Thread.sleep(1000); } catch (InterruptedException e) {}}});Thread t2 new Thread(() - {synchronized (LOCK) { // 若t1持有锁t2进入Blocked状态System.out.println(t2获取到锁);}});t1.start();t2.start();} }5. 等待状态Waiting 定义线程调用wait()、join()或LockSupport.park()后进入的状态需显式唤醒。比喻 顾客在餐厅等待服务员通知座位就绪。代码示例public class WaitingDemo {public static void main(String[] args) throws InterruptedException {Thread t new Thread(() - {synchronized (WaitingDemo.class) {try {WaitingDemo.class.wait(); // 进入Waiting状态} catch (InterruptedException e) {}}});t.start();Thread.sleep(100);System.out.println(t的状态: t.getState()); // 输出WAITINGsynchronized (WaitingDemo.class) {WaitingDemo.class.notify(); // 唤醒线程}} }6. 超时等待状态Timed Waiting 定义线程调用Thread.sleep()、wait(timeout)、join(timeout)等带超时参数的方法后进入的状态。比喻 顾客设定了等待餐厅座位的最长时间超时后自行离开。代码示例public class TimedWaitingDemo {public static void main(String[] args) throws InterruptedException {Thread t new Thread(() - {try {Thread.sleep(2000); // 进入Timed Waiting状态2秒} catch (InterruptedException e) {}});t.start();Thread.sleep(100);System.out.println(t的状态: t.getState()); // 输出TIMED_WAITING} }7. 死亡状态Terminated 定义线程执行完毕run()方法正常返回或因未捕获的异常终止。比喻 运动员完成比赛或中途退赛。关键点 死亡状态的线程无法重新启动需创建新线程。 代码示例Thread t new Thread(() - System.out.println(线程运行中)); t.start(); Thread.sleep(100); // 等待线程执行完毕 System.out.println(t的状态: t.getState()); // 输出TERMINATED三、状态转换核心方法 方法作用导致的状态转换start()启动线程新建 → 就绪sleep(long)线程休眠指定时间运行 → 超时等待 → 就绪wait()释放锁并等待通知运行 → 等待 → 就绪notify()/notifyAll()唤醒等待的线程无需配合wait()使用join()等待线程结束运行 → 等待 → 就绪synchronized获取对象锁运行 → 阻塞 → 就绪LockSupport.park()暂停当前线程运行 → 等待 → 就绪LockSupport.parkNanos(long)暂停指定时间运行 → 超时等待 → 就绪 四、线程生命周期完整示例 public class ThreadLifeCycleDemo {public static void main(String[] args) throws InterruptedException {// 1. 新建状态Thread t new Thread(() - {System.out.println(线程进入运行状态);// 3. 超时等待状态sleeptry {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}// 4. 阻塞状态等待锁synchronized (ThreadLifeCycleDemo.class) {try {// 5. 等待状态waitThreadLifeCycleDemo.class.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println(线程即将结束);});// 2. 就绪状态t.start();System.out.println(线程启动后状态: t.getState()); // RUNNABLE// 主线程休眠让子线程有机会执行Thread.sleep(200);System.out.println(子线程sleep时状态: t.getState()); // TIMED_WAITING// 等待子线程进入wait状态Thread.sleep(1200);System.out.println(子线程wait时状态: t.getState()); // WAITING// 唤醒子线程synchronized (ThreadLifeCycleDemo.class) {ThreadLifeCycleDemo.class.notify();}// 等待子线程执行完毕t.join();System.out.println(子线程结束后状态: t.getState()); // TERMINATED} }五、常见问题与注意事项 线程复用问题 死亡状态的线程无法重启需避免重复调用start()。 阻塞与忙等待 阻塞状态如sleep()、wait()会释放CPU资源而忙等待如while(true)会持续占用CPU。 线程安全 多线程在状态转换过程中可能出现竞态条件需使用synchronized、Lock或原子类保护共享资源。 中断机制 使用interrupt()优雅地终止线程而非强制终止stop()已被弃用。 Thread t new Thread(() - {while (!Thread.currentThread().isInterrupted()) {// 执行任务} }); t.start(); t.interrupt(); // 中断线程六、总结 线程的生命周期就像一场精心编排的舞蹈 新建舞者站到舞台一侧创建线程对象。就绪等待音乐响起等待CPU调度。运行尽情舞蹈执行代码。阻塞暂停动作等待道具等待资源。等待定格姿势等待提示等待通知。超时等待按预定时间暂停超时自动恢复。死亡舞蹈结束谢幕执行完成。 理解每个状态的转换条件和对应的方法方便我们能更精准地控制线程行为编写出高效、稳定的并发程序。
http://www.hkea.cn/news/14577082/

相关文章:

  • 建设银行 杭州招聘网站手工制作小玩具简单又好玩
  • 爱站网关键词搜索微信 网站 收费标准
  • 中小型网站建设效果js网站计数器代码
  • 怎么查找网站备案主体nodejs做视频网站
  • 南京模板建站上饶专业企业网站建设
  • 营销型企业网站建设案例珠海正规网站制作排名费用多少
  • 化妆品网站建设方案互联网公司排名 中国
  • 做门户网站用什么模板wordpress img相对路径
  • 网站开发技术人员怎么接单怎样做站长建网站
  • 有关网站建设的视频做社交网站的预算
  • 云南省网站建设收费调查报告作图网站都有哪些
  • 佛山网站制作网站wordpress类似娱乐网主题
  • 黄山网站推广公司百度资源分享网页
  • 适合前端做项目的网站做网站都需要什么人团
  • 西安网站建设发布商丘seo推广
  • 制作个人网站素材工信部备案信息查询系统
  • wordpress迁移跳转原网站有没有免费的网站空间
  • 如何 html5 网站模板楼盘信息在哪里能查到
  • 广州建设网站是什么关系百度seo关键词优化公司
  • 哪个网站做五金冲压的wordpress上线需要改什么
  • 电商网站建设工具设计素材网站黄金烤肠
  • 国内做轮胎网站哪家好抚顺您做煮火锅网站
  • 58网站建设58xiamen一个网站可以做多少弹窗广告
  • 莆田建设项目环境网站做个网页需要多少钱?
  • cad dwt模板做网站模版网站结构优化的优化包括
  • 网站怎么做有创意wordpress更改固定链接打不开
  • wordpress 做音乐网站开工作室做网站怎样找资源
  • 深圳做外贸网站哪家好网站做ddns解析
  • 网站建设有微信的关系每个网站都有服务器吗
  • 电影网站怎么建设六盘水市城乡建设局网站