关注
Java实现多线程的常见方法
1. 继承 Thread 类
- 方式:创建子类继承 Thread 类,重写 run() 方法定义线程任务。
- 特点:
- 简单直接,可直接通过 start() 启动线程。
- 局限性:Java 单继承机制限制,子类无法再继承其他类。
2. 实现 Runnable 接口
- 方式:创建类实现 Runnable 接口,实现 run() 方法,将实例传入 Thread 构造器启动。
- 特点:
- 避免单继承限制,更灵活(可同时继承其他类或实现其他接口)。
- 适合多个线程共享同一任务逻辑(如资源同步场景)。
3. 实现 Callable 接口(JDK 1.5+)
- 方式:创建类实现 Callable<V> 接口,实现 call() 方法(可抛异常、带返回值),通过 FutureTask 包装后提交给线程执行。
- 特点:
- 支持返回值和异常处理,比 Runnable 功能更强大。
- 需配合 Future 或 ExecutorService 获取结果或管理线程。
4. 使用线程池(如 ExecutorService )
- 方式:通过 Executors 工具类创建线程池(如 FixedThreadPool / CachedThreadPool ),调用 execute() 或 submit() 提交任务( Runnable / Callable )。
- 特点:
- 重用线程,减少创建/销毁开销,提升性能。
- 统一管理线程生命周期,控制并发数量,避免资源耗尽。
- 适合大规模或重复执行的多线程任务。
核心区别
- Thread vs Runnable / Callable :前者是线程本身,后者是任务逻辑(分离“线程”与“任务”,更符合面向对象设计)。
- Runnable vs Callable :后者支持返回值和异常处理,适合需要结果的场景。
- 线程池优势:相比手动创建线程,线程池更高效、易维护,是实际开发中的首选方案。
查看原帖
1 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 国企秋招,你投了吗? #
24714次浏览 193人参与
# 工作后会跟朋友渐行渐远吗 #
39461次浏览 263人参与
# 乐堡互娱校招 #
33654次浏览 286人参与
# 你的国庆怎么过 #
55856次浏览 526人参与
# 秋招感动瞬间 #
29892次浏览 287人参与
# 应届生第一份工作最好去大厂吗? #
28714次浏览 522人参与
# 携程求职进展汇总 #
622657次浏览 4569人参与
# 德州仪器求职进展汇总 #
10598次浏览 160人参与
# 签约有哪些注意事项 #
47079次浏览 271人参与
# 贝壳求职进展汇总 #
30137次浏览 172人参与
# 怎么防止在试用期被辞退 #
139854次浏览 946人参与
# 4399求职进展汇总 #
31673次浏览 165人参与
# 大厂面试初体验 #
55649次浏览 265人参与
# 机械人,你拿到几个offer啦 #
47658次浏览 355人参与
# 机械人的薪资开到多少,才适合去? #
127975次浏览 472人参与
# 你会为了工作牺牲生活吗? #
46268次浏览 372人参与
# 海尔求职进展汇总 #
9739次浏览 37人参与
# 歌尔求职进展汇总 #
66915次浏览 353人参与
# 机械只有转码才有出路吗? #
141414次浏览 1630人参与
# 机械人值得去的国央企 #
78657次浏览 450人参与
# 市场营销人求职交流聚集地 #
143484次浏览 1171人参与
# ___岗狗都不干,我干! #
21296次浏览 155人参与