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

国外做鞋子的网站福州短视频seo服务

国外做鞋子的网站,福州短视频seo服务,沈阳工程信息造价网,网站模板安装出现预先建设数据库小白学编程之——深入理解Java线程的完整生命周期 一、线程是什么? 如果把程序比作一个工厂,线程就是工厂里的工人。每个工人独立完成一项任务,多个工人协作可以提升效率。但工人(线程)的生命周期并非“一直工作”&a…

小白学编程之——深入理解Java线程的完整生命周期

一、线程是什么?

如果把程序比作一个工厂,线程就是工厂里的工人。每个工人独立完成一项任务,多个工人协作可以提升效率。但工人(线程)的生命周期并非“一直工作”,而是会根据任务需求和资源分配不断变化状态。理解线程的“一生”,是掌握多线程编程的关键。


二、线程的六大生命周期状态

以Java为例,线程的生命周期分为6种状态,官方定义在Thread.State枚举类中:

1. NEW(新建状态)

  • 定义:通过new Thread()创建线程对象,但未调用start()方法。
  • 类比:就像刚入职的新员工,工位和电脑已准备好,但还没开始工作。
  • 代码示例
    Thread thread = new Thread(() -> System.out.println("Hello"));
    System.out.println(thread.getState()); // 输出 NEW
    

2. RUNNABLE(可运行/运行状态)

  • 定义:调用start()后进入该状态,包含两个子状态:
    • READY(就绪):等待CPU分配时间片。
    • RUNNING(运行):正在执行任务。
  • 注意:Java将就绪和运行合并为RUNNABLE,简化了状态管理。

3. BLOCKED(阻塞状态)

  • 触发条件:线程试图获取被其他线程占用的同步锁(如synchronized代码块)。
  • 类比:员工A需要打印机,但打印机正被员工B使用,A只能等待。

4. WAITING(无限等待)

  • 触发方法:调用无超时的wait()join()LockSupport.park()
  • 特点:必须等待其他线程唤醒(如notify()或目标线程终止)。

5. TIMED_WAITING(超时等待)

  • 触发方法:调用带时间参数的sleep(1000)wait(500)等。
  • 区别:若超时后未被唤醒,线程会自动恢复至RUNNABLE。

6. TERMINATED(终止状态)

  • 触发条件run()方法执行完毕或抛出未捕获异常。
  • 注意:终止的线程无法再次启动,必须创建新对象。

三、状态转换的“人生轨迹”

1. 从NEW到RUNNABLE

调用start()后,线程进入就绪队列,等待CPU调度:

thread.start(); // 状态变为 RUNNABLE

2. RUNNABLE ↔ BLOCKED

  • 进入BLOCKED:尝试获取已被占用的锁。
  • 回到RUNNABLE:成功获得锁时。

3. RUNNABLE ↔ WAITING/TIMED_WAITING

  • 进入等待:调用wait()join()sleep()
  • 恢复运行:被唤醒(notify())或超时结束。

4. TERMINATED

线程任务完成后的最终归宿,无法逆转。


四、控制线程的“魔法方法”

方法作用状态影响
start()启动线程NEW → RUNNABLE
sleep(long)主动休眠指定时间RUNNABLE → TIMED_WAITING
join()等待目标线程终止当前线程进入WAITING
interrupt()中断线程(需配合异常处理)唤醒WAITING/TIMED_WAITING
yield()让出CPU时间片(不保证立即切换)RUNNABLE → RUNNABLE

五、线程池如何“续命”线程?

传统线程频繁创建销毁开销大,线程池通过复用线程优化生命周期:

  1. 核心线程:空闲时不会销毁,长期存活。
  2. 任务队列:任务排队等待空闲线程。
  3. 非核心线程:任务激增时临时创建,空闲超时后回收。

六、避坑指南(常见问题)

  1. 死锁:两线程互相等待对方释放锁。
    解决:按固定顺序获取锁,或使用tryLock()
  2. 虚假唤醒wait()可能无故返回,需用循环检查条件。
  3. 资源泄漏:未正确关闭线程池或I/O连接。

七、总结

理解线程生命周期就像掌握工人的工作流程:何时上岗(NEW)、何时休息(WAITING)、何时协作(BLOCKED)。通过合理使用同步机制(如synchronizedLock)和线程池,可以让多线程程序既高效又稳定。

http://www.dtcms.com/wzjs/188682.html

相关文章:

  • 怎样增加网站的权重网络推广和网站推广
  • mvc5网站开发项目下载关键词优化工具有哪些
  • 平台式网站模板广州网站营销seo
  • 游戏抽奖网站用java怎么做哪里有网站推广优化
  • 网站开发工程师招聘外贸营销型网站建设公司
  • 游戏网站建设方案书手机关键词点击排名软件
  • wordpress新闻网站模板百度指数在线查询工具
  • 网站设计公司服务平台windows优化大师官方下载
  • 网站按钮设计成什么颜色原因杭州网络推广有限公司
  • 新手做网站做那个进一步优化落实
  • 比较好的网站开发推广神器app
  • 公安局松江分局网站市场推广计划方案模板
  • 淘宝客推广seo排名优化教学
  • 业务网站制作咨询公司
  • 怎么做旅店网站今日新闻联播
  • 在线下载免费软件的网站成都seo排名
  • python 网站开发实例百度指数在线查询前100
  • 哪个网站做logo赚钱2023年时政热点事件
  • 如何做网站长尾关键词布局深圳市昊客网络科技有限公司
  • 关于做网站的书推广普通话的宣传标语
  • 技术支持 东莞网站建设国内新闻大事20条
  • nodejs可以做网站么长沙哪家网络公司做网站好
  • 昆山营销型网站建设方法seo是什么工作
  • 做国外的营销的网站河南靠谱seo地址
  • 私人做医院的网站江西seo推广软件
  • 两台电脑一台做服务器 网站公司培训
  • 网站建设公司优惠中湖南网站推广公司
  • 域名可以同时做邮箱和网站么河南网站推广电话
  • 做的网站乱码怎么搞网站开发的步骤
  • 佛山免费自助建站模板游戏推广员一个月能赚多少