观察者模式实现
Javadoc
java
/**
* 【概要描述】一句话说明功能(必须写)
* <p>
* 【详细描述】详细说明作用、逻辑、注意事项等
* 支持简单HTML标签:<br>换行 <code>代码</code> <b>加粗</b>
*
* 【Javadoc标签】固定格式的标记,用于标注作者、参数、返回值等
* @标签名 内容
*/仅能写在 类、接口、枚举、方法、成员变量 的声明上方,不能写在方法内部。
最常用标准Javadoc标签
| 标签 | 作用 | 使用位置 |
|---|---|---|
@author 作者名 | 标注类/接口的作者 | 类、接口、枚举 |
@version 版本号 | 标注类/接口的版本 | 类、接口、枚举 |
@since 版本 | 标注从哪个版本开始支持 | 类、方法、字段 |
@param 参数名 说明 | 说明方法的入参含义 | 方法、构造方法 |
@return 说明 | 说明方法的返回值 | 非void方法 |
@throws 异常类 说明 | 说明方法可能抛出的异常 | 方法 |
@deprecated | 标记已废弃,不推荐使用 | 类、方法 |
@see 类/方法 | 关联参考的类/方法 | 任意 |
特性 {@link} @see 使用位置 句子内部,和文字混排 必须单独一行,不能嵌在句子里 语法格式 {@link 类名#方法名(参数)}(带大括号) @see 全类名#方法名(无大括号) 展示效果 像普通文本一样,只是可点击 生成文档时会单独出现「另请参阅」区块 你的场景是否适合 ✅ 描述需求时提到类 / 方法,嵌在行内 ❌ 强行用会破坏句子,语法错误
| 对比维度 | 继承 Thread 类 | 实现 Runnable 接口 | 实现 Callable 接口 |
|---|---|---|---|
| 实现方式 | 继承类 | 实现接口 | 实现接口 |
| 核心方法 | run() | run() | call() |
| 返回值 | ❌ | ❌ | ✅ (泛型指定) |
| 抛出异常 | ❌ 不能抛检查异常 | ❌ 不能抛检查异常 | ✅ 可以抛出异常 |
| 继承限制 | ❌ 单继承,无法扩展 | ✅ 无限制 | ✅ 无限制 |
| 资源共享 | ❌ | ✅ | ✅ |
| 代码复杂度 | 简单 | 中等 | 稍复杂 |
| 推荐指数 | ⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐(需要返回值时) |
- 启动线程必须用
start()****,不能用run()- 直接调用
run():只是普通方法调用,在主线程执行,不会创建新线程 - 调用
start():JVM 会创建新线程,自动调用run()执行任务
- 直接调用
- 优先选择:
- 无返回值 → 实现
Runnable - 有返回值/需要异常处理 → 实现
Callable - 永远不推荐继承
Thread(单继承坑太大)
- 无返回值 → 实现