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

第9章 Java多线程 知识点总结

1. 线程的概念

1. 线程是进程内的独立执行路径,是操作系统调度的基本单位。

2. 进程是资源分配的单位,一个进程内可以包含多个线程,线程共享进程的内存和资源。

3. 多线程的优点:提高程序响应性、充分利用CPU资源、简化异步编程。

2. 线程的创建方式

1. 继承Thread类:定义类继承Thread,重写run()方法,创建对象后调用start()方法启动线程。

2. 实现Runnable接口:定义类实现Runnable接口,实现run()方法,将其作为参数传入Thread对象,再调用start()。

3. 实现Callable接口:支持返回值和异常处理,需配合ExecutorService和Future使用。

4. 使用线程池创建:通过ExecutorService管理线程,复用线程,减少频繁创建销毁的开销。

3. 线程的生命周期与状态

1. 新建状态:创建Thread对象后,尚未调用start()。

2. 就绪状态:调用start()后,等待CPU调度。

3. 运行状态:线程获得CPU时间片,执行run()方法。

4. 阻塞状态:线程因sleep()、wait()、join()或同步锁等待而暂停执行。

5. 死亡状态:run()方法执行完毕或因异常终止。

4. 线程的调度与优先级

1. Java线程优先级分为1-10级,默认是NORM_PRIORITY(5),优先级越高,被调度的概率越大。

2. 优先级只是建议,最终调度由操作系统决定,不保证严格按优先级执行。

3. Thread.yield()方法可让当前线程主动让出CPU,但不保证一定被其他线程抢占。

5. 线程的终止

1. 不推荐使用stop()方法,该方法会强制终止线程,可能导致数据不一致。

2. 推荐通过设置标志位(如volatile boolean isRunning)控制循环结束,让线程正常退出。

3. 线程被中断(interrupt())时,会抛出InterruptedException,可在catch块中处理清理工作。

6. 线程的同步与互斥

1. 线程安全问题:多个线程同时访问共享资源,可能导致数据不一致。

2. 同步方法:使用synchronized关键字修饰方法,锁是当前对象实例,保证同一时间只有一个线程执行该方法。

3. 同步代码块:使用synchronized(对象锁)包裹代码块,锁可以是任意对象,粒度更细。

4. Lock锁:java.util.concurrent.locks.Lock接口(如ReentrantLock),比synchronized更灵活,支持公平锁、可中断锁。

5. 死锁:多个线程互相持有对方需要的锁,导致无限等待。避免死锁的方法:破坏请求与保持、破坏循环等待、破坏不可剥夺。

7. 线程间通信

1. wait():让当前线程释放锁并进入等待状态,直到被notify()或notifyAll()唤醒。

2. notify():唤醒等待该对象锁的一个线程。

3. notifyAll():唤醒等待该对象锁的所有线程。

4. 注意:这三个方法必须在同步代码块/同步方法中调用,且调用者必须是锁对象本身。

8. 线程池

1. 作用:复用线程、控制并发数、管理线程生命周期,避免频繁创建销毁线程的开销。

2. 核心参数:核心线程数、最大线程数、空闲线程存活时间、任务队列、拒绝策略。

3. 常用创建方式:Executors.newFixedThreadPool()(固定线程数)、Executors.newCachedThreadPool()(可缓存线程池)、Executors.newSingleThreadExecutor()(单线程池)。

4. 关闭线程池:shutdown()(等待任务完成后关闭)、shutdownNow()(立即关闭,尝试中断正在执行的任务)。

9. Timer定时器线程

1. Timer可安排任务一次性执行或周期性执行,底层由单线程调度。

2. 常用方法:schedule(TimerTask task, long delay)(延迟执行)、schedule(TimerTask task, long delay, long period)(周期性执行)。

3. 注意:单线程调度,任务执行时间过长会影响后续任务;任务抛出异常会导致Timer终止。

http://www.rkmt.cn/news/1536693.html

相关文章:

  • 碳纤维布厂家哪个行?3步筛选不踩坑 - 速递信息
  • 2026年湖南硅酮胶与门窗五金一站式采购指南:5大品牌深度横评 - 优质企业观察收录
  • 传统医学AI革命:让中医大语言模型成为你的个人健康顾问
  • 期末结课论文不用硬熬!paperxie 课程论文 AI 写作,按页面步骤轻松产出合规结课文稿
  • 大模型时代:小白程序员转型指南,收藏必备!
  • 项目实训开发日志(十):BabyMind:基于多Agent和RAAG的科学育儿辅助平台
  • 2026 昆明黄金回收值得信赖品牌榜,合扬稳居榜首 - 开心测评
  • 简历代投能否提升求职成功率?一个定量与定性分析
  • 2026上海控江中学附近新高一地理补习班机构实测:方法科学、提分轻松筛选标准
  • 破解版软件风险剖析与安全录屏替代方案全指南
  • 柯桥代理记账找哪家 - 速递信息
  • 终极指南:让老Mac焕发新生的OpenCore Legacy Patcher完整解决方案
  • 2026深圳留学中介怎么选?一站式高端国际高中备考的深圳高端知名留学中介推荐 - 品牌2026
  • 20253331靳淏童 2025-2026-2 《Python程序设计》实验四报告
  • 三星P3100平板刷机改造指南:从老旧设备到智能控制中心
  • 物理信息神经算子(PINO)完全指南:融合物理规律与深度学习的偏微分方程求解新范式
  • 2026年6月无锡黄金回收实测榜单|5家正规机构深度测评,拒绝高价套路 - 生活测评君
  • 5分钟掌握B站缓存视频转换:m4s-converter无损合并全攻略
  • 佛山出黄金别瞎跑!2026 变现底层逻辑看懂少亏千元 - 奢侈品交易观察员
  • 2026 年优质服务商汇总,全国前十名小程序开发公司精选 - FaiscoJeff
  • 光合力量 60W 双头款植物补光灯|大空间植物景观专业补光方案 - 资讯报道
  • 2026年上门提货零担物流平台四家头部服务哪家强 - 奔跑123
  • 电商品牌GEO服务商典范实践:荷里购如何打造现象级人工智能心智突围 - 新闻快传
  • 深圳钢材供应商横评:交付能力与品质保障体系分析 - 资讯焦点
  • 5分钟掌握大麦自动抢票:Python自动化抢票工具实战指南
  • 如何快速部署Go-LDAP管理平台:企业身份认证的完整解决方案
  • 2026郑州网站建设公司实测推荐榜:10家服务商设计技术实力横评+选型避坑全攻略 - 资讯报道
  • 2026年内蒙古设备报废处置全链条解决方案深度横评指南 - 优质企业观察收录
  • 贵州全包装修怎么选?工艺、报价、售后全维度拆解 - 品研笔录
  • 装修不踩坑!2026年五大全屋定制高环保板材品牌推荐 - 科技焦点