关注
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 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
- 1... 后端实习什么算有产出9.0W
- 2... 悟已往之不谏,知来者之可追1.6W
- 3... 以Mentor视角,更喜欢有这些沟通技巧的实习生1.5W
- 4... 来算一算你的offer究竟到手工资多少!(详细教程)1.0W
- 5... 就是说有些招聘要求别太离谱噢9888
- 6... 双非本秋招字节转正失败春招重新拿下字节和腾讯9621
- 7... 找实习、找工作中如何管理好自己的情绪?8693
- 8... 腾讯云智一面面经7074
- 9... 暑期实习后,如何完成学生到职场人的身份转换?7074
- 10... 【26届四段大厂】实习爆炸产出方法论 2.06681
正在热议
更多
# 我的求职总结 #
23490次浏览 440人参与
# 我的工作日记 #
96317次浏览 1262人参与
# 毕业季,给职场新人一些建议 #
19615次浏览 357人参与
# 晒一晒你收到的礼盒 #
61526次浏览 370人参与
# 我的实习日记 #
2433621次浏览 25381人参与
# 辞职之后最想做的一件事 #
9856次浏览 156人参与
# Offer比较,求稳定还是求发展 #
48876次浏览 235人参与
# 薪资一样,你会选择去大厂还是小公司 #
16040次浏览 99人参与
# 你想吐槽公司的哪些规定 #
16917次浏览 66人参与
# 选offer应该考虑哪些因素 #
17223次浏览 275人参与
# 你见过最离谱的招聘要求是什么? #
188016次浏览 1401人参与
# 机械人还在等华为开奖吗? #
216991次浏览 1097人参与
# 第一份工作应该只看薪资吗 #
138378次浏览 1456人参与
# 秋招想进国企该如何准备 #
57642次浏览 374人参与
# 为了秋招你都做了哪些准备? #
10595次浏览 161人参与
# 在国企工作的人,躺平了吗? #
327421次浏览 3842人参与
# 你怀疑过自己的专业选择吗? #
17228次浏览 201人参与
# 牛客十周岁生日快乐 #
129427次浏览 1517人参与
# 你想留在一线还是回老家? #
37585次浏览 447人参与
# 你小时候最想从事什么职业 #
91153次浏览 1703人参与