Java多线程实战总结

需积分: 13 1 下载量 109 浏览量 更新于2024-09-07 收藏 2KB TXT 举报
"Java多线程小结" 在Java编程中,多线程是实现并发执行任务的关键技术,它能够有效利用系统资源,提高程序的响应速度和整体性能。以下是对Java多线程的一些关键知识点的总结: 1. **线程的创建方式**: - **继承Thread类**:创建一个新的类,该类继承自Thread类,然后重写run()方法,创建对象后调用start()启动线程。 - **实现Runnable接口**:创建一个类实现Runnable接口,实现run()方法,然后将Runnable对象作为参数传递给Thread类的构造函数,创建Thread对象并启动。 2. **线程控制方法**: - **sleep()**:使当前运行的线程暂停指定的毫秒数,然后继续执行。 - **join()**:等待调用此方法的线程执行完毕后再继续执行当前线程。 - **yield()**:让当前线程暂停,但不保证立即恢复,而是让其他线程有机会执行。 - **interrupt()**:中断线程,线程可以通过检查isInterrupted()或InterruptedException来响应中断。 3. **线程的优先级**: - Java中,线程有1-10的优先级,其中1是最低优先级,10是最高优先级,通过setPriority()设置,但实际执行顺序依赖于JVM和操作系统的调度。 4. **线程同步**: - **同步方法**:通过关键字`synchronized`修饰方法,确保同一时间只有一个线程可以访问。 - **同步代码块**:使用`synchronized(this) { ... }`或`synchronized(object) { ... }`,锁定指定的对象。 5. **线程状态**: - **NEW**:新建但未启动的线程。 - **RUNNABLE**:运行中或准备运行的线程。 - **BLOCKED**:被阻塞,等待监视器锁。 - **WAITING**:无限制等待,调用wait()方法。 - **TIMED_WAITING**:定时等待,如调用wait(long timeout)或sleep(long timeout)。 - **TERMINATED**:线程已结束。 6. **死锁**:多个线程互相等待对方释放资源而无法继续执行的状态,避免死锁的关键在于合理设计资源获取顺序和避免循环等待。 7. **线程安全**: - 实现线程安全的类,如`StringBuffer`、`Vector`和`Hashtable`,它们在内部使用了同步机制。 - 使用`Collections.synchronizedList()`等工厂方法创建线程安全的集合。 8. **守护线程**: - 通过`setDaemon(true)`将线程标记为守护线程,当所有非守护线程结束后,即使守护线程还在运行,JVM也会退出。 9. **线程通信**: - `wait()`, `notify()` 和 `notifyAll()`:这些方法用于线程间的通信,必须在同步环境中使用,用于控制线程的协作执行。 10. **异常处理**: - 通常,线程中的异常不会传播到主线程,需要在线程的run()方法内进行捕获和处理。 11. **线程池**: - 使用`ExecutorService`、`ThreadPoolExecutor`和`Executors`创建和管理线程池,能更有效地管理和控制线程的生命周期。 12. **线程调度策略**: - 操作系统决定线程的调度,Java提供了线程调度策略,如固定优先级调度、抢占式调度等。 13. **示例**: - 常见的线程通信示例是“生产者-消费者”模型,通过wait()和notify()方法协调生产者和消费者线程的工作。 以上是对Java多线程的简要概述,实际上,多线程编程涉及到的内容远不止这些,包括线程局部变量、线程安全的类、并发工具类等,都是深入理解和掌握多线程的关键。
2017-07-14 上传
本书浅显易懂的介绍了JAVA线程相关的设计模式,通过程序范例和UML图示来一一解说,书中代码的重要部分加了标注以使读者更加容易理解,再加上图文并茂,对于初学者还是程序设计高手来说,这都是一本学习和认识JAVA设计模式的一本好书。(注意,本资源附带书中源代码可供参考) 多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中在代码的重要部分加上标注使读者更加容易解读,再配合众多的说明图解,无论对于初学者还是程序设计高手来说,这都是一本学习和认识设计模式非常难得的好书。 书中包含Java线程的介绍导读、12个重要的线程设计模式和全书总结以及丰富的附录内容。第一章相关线程设计模式的介绍,都举一反三使读者学习更有效。最后附上练习问题,让读者可以温故而知新,能快速地吸收书中的精华,书中最后附上练习问题解答,方便读者学习验证。 目录 漫谈UML UML 类图 类和层次结构的关系 接口与实现 聚合 访问控制 类间的关联性 顺序图 处理流程和对象间的协调 时序图 Introduction 1 Java语言的线程 Java语言的线程 何谓线程 明为追踪处理流程,实则追踪线程 单线程程序 多线程程序 Thread类的run方法和start方法 线程的启动 线程的启动(1)——利用Thread类的子类 线程的启动(2)——利用Runnable接口 线程的暂时停止 线程的共享互斥 synchronized方法 synchronized阻挡 线程的协调 wait set——线程的休息室 wait方法——把线程放入wait set notify方法——从wait set拿出线程 notifyAll方法——从wait set拿出所有线程 wait、notify、notifyAll是Object类的方法 线程的状态移转 跟线程有关的其他话题 重点回顾 练习问题 Introduction 2 多线程程序的评量标准 多线程程序的评量标准 安全性——不损坏对象 生存性——进行必要的处理 复用性——可再利用类 性能——能快速、大量进行处理 评量标准的总结 重点回顾 练习问题 第1章 Single Threaded Execution——能通过这座桥的,只有一个人 第2章 Immutable——想破坏它也没办法 第3章 Guarded Suspension——要等到我准备好喔 第4章 Balking——不需要的话,就算了吧 第5章 Producer-Consumer——我来做,你来用 第6章 Read-Write Lock——大家想看就看吧,不过看的时候不能写喔 第7章 read-Per-Message——这个工作交给你了 第8章 Worker Thread——等到工作来,来了就工作 第9章 Future——先给您这张提货单 第10章 Two-Phase Termination——快把玩具收拾好,去睡觉吧 第11章 Thread-Specific Storage——每个线程的保管箱 第12章 Active Object——接受异步消息的主动对象 总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B Java的内存模型 附录C Java线程的优先级 附录D 线程相关的主要API 附录E 参考文献