1. 为什么不推荐继承 Thread?
public class MyThread extends Thread {}
问题:
单继承限制
任务与线程强耦合
不利于线程池
2. Runnable:最基础也是最常用
Runnable task = () -> {
System.out.println("执行任务");
};
new Thread(task).start();
特点:
无返回值
无异常抛出
适合简单任务
3. Callable:有返回值的任务
Callable<Integer> task = () -> {
return 100;
};
配合 Future 使用:
FutureTask<Integer> futureTask = new FutureTask<>(task);
new Thread(futureTask).start();
Integer result = futureTask.get();
4. Runnable vs Callable 对比
5. 本质理解(重要)
线程 = 执行容器
Runnable / Callable = 任务
这是 Java 并发设计的核心思想。