--- title: JavaIO、多线程与反射 tags: - module - java - io - concurrency - reflection - joplin type: module source_type: reconstructed created: 2026-04-22 updated: 2026-04-22 --- # JavaIO、多线程与反射 > [!abstract] > 这一模块处理 Java 中最容易从“语法学习”进入“系统编程”的部分。文件读写、线程并发、网络通信、反射机制都在这里汇合。 ## 模块结论 - [[JavaIO]] 负责数据与外部设备之间的输入输出。 - [[Java多线程]] 负责并发执行路径的组织与协调。 - [[Java反射]] 提供运行期动态获取类信息和调用能力,是很多框架机制的基础。 - 日志、类加载器、XML、单元测试、注解这些内容虽然分散,但共同构成了 Java 从基础语法走向工程化框架前的重要过渡层。 ## 一、异常与 File - 异常是程序运行中出现的可预期或不可预期错误机制。 - File 负责文件和路径层面的抽象,不等于真正读写内容。 - 先理解异常体系,再理解 IO 代码中的 `throws` / `try-catch` 更顺。 ## 二、IO 流 - 按方向分输入流、输出流。 - 按处理单位分字节流、字符流。 - 字节流适合通用二进制数据,字符流更贴近文本处理。 ### 复习重点 - IO 操作最终都是在做数据搬运。 - 关闭流、刷新流、缓冲流的作用要区分清楚。 ## 三、多线程 - 线程是进程中的执行路径。 - 常见创建方式包括继承 Thread、实现 Runnable、实现 Callable。 - 并发与并行的区别要明确。 ### 为什么线程难 - 不是启动线程难,而是多个线程同时访问共享资源后,时序问题变复杂。 - 所以重点不只是 API,而是执行模型和协作关系。 ## 四、网络编程与案例 - 本质上是基于网络协议进行数据发送与接收。 - Java 基础阶段通常从 Socket 通信开始理解。 - 聊天室案例的价值在于把 Socket、线程和消息收发组织到同一个场景里。 ## 五、反射、注解与类加载 - 反射允许在运行时获取类、构造器、字段和方法信息。 - 动态代理通过代理对象扩展调用过程。 - 注解提供声明式元数据,类加载器决定类在 JVM 中如何被装入。 - 这几者共同构成理解框架底层行为的重要入口。 ## 六、日志、XML 与单元测试 - 日志用于替代随手 `println`,让程序运行信息更可追踪。 - XML 是很多配置与数据交换场景里的传统载体。 - 单元测试强调对最小可验证单元进行自动化验证,是工程质量基础。 ## 七、易错点 - File 不负责读取文件内容,只负责文件对象层面的操作。 - IO 的“输入输出”是以程序内存为参照,不是以用户视角为参照。 - `run()` 和 `start()` 不能混为一谈。 - 反射强大,但会带来运行时复杂性和一定性能成本。 ## 八、复习提问 - 字节流和字符流的本质区别是什么? - Java 中三种常见线程创建方式分别适合什么场景? - 聊天室案例为什么能同时暴露网络编程和并发协作问题? - 为什么说反射是很多框架的底层基础? ## 来源 - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/26.IO(异常&File&综合案例).md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/27.IO流(字节流&字符流).md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/28.IO流(其他流).md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/29.多线程01.md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/30.多线程02.md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/30.多线程02(额外扩展).md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/31.网络编程.md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/31.网络编程(控制台版聊天室).md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/32.反射&动态代理.md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/33.log日志.md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/34.类加载器.md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/35.xml.md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/36.单元测试.md]] - [[raw/Joplin/编程学习项目/Java学习笔记/Java基础--下部/37.注解.md]] ## 相关页面 - [[Java]] - [[Java核心API与集合]] - [[Java异常]] - [[JavaIO]] - [[Java多线程]] - [[Java反射]] - [[JavaWeb与SpringBoot]]