当前位置: 首页 > 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.jsqmd.com/news/1024826/

相关文章:

  • 136.深度学习优质毕设项目|标准DDPM扩散模型理论与工程落地全套
  • 碳纤维布厂家哪个行?3步筛选不踩坑 - 速递信息
  • 2026 年义乌汽车贴膜盘点:四家服务解析与玉发龙膜授权店对比 - 国麟测评
  • app稳定性测试之Monkey工具
  • 西安手表回收|劳力士/欧米茄/百达翡丽,热门款溢价回收门店完整指南 - 名奢变现站
  • 计算机毕业设计之jsp校园在线问卷调查系统的设计与实现
  • 传统医学AI革命:让中医大语言模型成为你的个人健康顾问
  • 2026昆明普通人变现黄金怕被坑,如何选店以及避坑+四家口碑老店地址推荐 - 天天生活分享日志
  • 2026年湖南硅酮胶与门窗五金一站式采购指南:5大品牌深度横评 - 优质企业观察收录
  • 期末结课论文不用硬熬!paperxie 课程论文 AI 写作,按页面步骤轻松产出合规结课文稿
  • 大模型时代:小白程序员转型指南,收藏必备!
  • 项目实训开发日志(十):BabyMind:基于多Agent和RAAG的科学育儿辅助平台
  • 深度实战:使用Legacy-iOS-Kit让经典iOS设备重焕新生
  • 一物一码提货券管理系统,为什么总在旺季把利润送出去? - 纳宝科技一物一码
  • 2026年6月珍珠棉发泡设备TOP8推荐 - 资讯焦点
  • 破解版软件风险剖析与安全录屏替代方案全指南
  • 2026上海控江中学附近新高一地理补习班机构实测:方法科学、提分轻松筛选标准
  • 2026日照黄金回收避坑实测:暗访4家机构,正规渠道这样选更安心 - 商业快讯早知道
  • 简历代投能否提升求职成功率?一个定量与定性分析
  • 2026 昆明黄金回收值得信赖品牌榜,合扬稳居榜首 - 开心测评
  • 2026年湖南门窗五金与硅酮胶供应商深度横评:如何避坑选对一站式配套材料伙伴 - 优质企业观察收录
  • 2026年安徽高考没考上怎么办?还有什么上大专办法?升学途径 - 我叫小周
  • 2026云南高考400分报考辽宁院校,填报建议与避坑指南 - 品牌2026
  • 3步解锁虚幻引擎游戏存档:uesave让存档编辑像编辑文本一样简单
  • 柯桥代理记账找哪家 - 速递信息
  • AI写论文到底靠谱吗?我实测了5款主流AI论文工具 - 资讯焦点
  • 138、MTK Camera HAL 架构:Scenario、Feature、Pipeline 的配置与实际移植
  • 终极指南:让老Mac焕发新生的OpenCore Legacy Patcher完整解决方案
  • Spring Tools 5.2.0 正式发布,新增 Claude 插件、Spring AI 支持等亮点
  • RFID天线调试:安威无线的专业解决方案与技术优势 - 资讯焦点