在 Java 中,线程(Thread) 和 Executor(执行器) 是并发编程中两个不同层次的概念。简单来说:线程是“干活的工人”,Executor 是“管理工人的调度中心”。
下面从多个角度对比它们的区别。
Thread 是 Java 对操作系统线程的封装Thread 对象通常对应一个 操作系统级线程Thread t = new Thread(() -> {
System.out.println("任务执行");
});
t.start();
✅ 特点:
Executor 是一个 接口,用于 提交任务Executor executor = Executors.newFixedThreadPool(2);
executor.execute(() -> {
System.out.println("任务执行");
});
✅ 特点:
| 对比项 | Thread | Executor |
|---|---|---|
| 抽象层级 | 底层 | 高层 |
| 是否管理线程 | 否(自己管) | 是(线程池管) |
| 线程复用 | ❌ 不能 | ✅ 能 |
| 任务提交方式 | start() | execute() / submit() |
| 生命周期管理 | 手动 | 自动 |
| 适用场景 | 简单、少量任务 | 高并发、大量任务 |
❌ 大量任务时性能差
ExecutorService pool = Executors.newFixedThreadPool(10);
for (int i = 0; i < 1000; i++) {
pool.execute(task);
}
✅ 只创建 10 个线程
✅ 执行 1000 个任务
关系可以这样理解:
Executor
└── 线程池(ThreadPoolExecutor)
├── Thread
├── Thread
└── 任务队列
Executor 是“调度者”,Thread 是“执行者”
❌ 误区 1:Executor 就是线程
✅ 错,Executor 只是接口
❌ 误区 2:用 Executor 就一定会新建线程
✅ 不一定,可能复用已有线程
❌ 误区 3:Thread 比 Executor 快
✅ 少量任务可能,大量任务一定慢
Thread 是执行单位,Executor 是管理体系;
直接用 Thread 是“自己招人干活”,用 Executor 是“开公司管人干活”。
如果你愿意,我也可以帮你画一张 线程池执行流程图 或对比 Executor vs CompletableFuture。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。