java 多线程系列文章列表, 请查看目录: 《java 多线程学习笔记》
1. 实现Runnable接口
实现Runnable接口方式, 是一种非常常用的方式. 适用于无须监控异步线程结束时间, 无须捕获异步线程返回值情景
直接继承Thread类是创建异步线程最简单的方式, 但并不常用. 匿名内部类的方式可以考虑.
1.1 Runnable 方式特点
- 面向接口编程, 松耦合设计
- 在多线程模式下,可实现对象资源共享. 但是需要注意使用原子类变量AtomicXXX
- 不能独立运行, 需绑定在Thread实例上运行
- 主线程不能监控子线程何时结束, 也不能获取子线程返回结果
- 切记启动异步线程的方式是调用star()方法, 而非调用run()方法.
- 主线程不能捕获子线程的抛出的异常, 通常会在run()方法中包裹一个最大的try-catch,自行处理异常
1.2 使用步骤
- 创建Runnable 子类, 实现run()方法. 可采用内部类, Lambda表达式,匿名内部类等方式.
- 创建Thread实例,绑定Callable实例
- 通过Thread实例的start()方法启动线程
1.3 适用场景
主线程无须监控异步线程何时结束, 也无须获取子线程执行结果
2. 异步线程示例
2.1 异步线程
public static void main(String[] args) {
// 创建runnable 实例
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("执行线程名称:" +