java八股文面试[多线程]——有几种创建线程的方式

this逃逸问题:构造器中启动线程。

面试题:

用Thread和Runable创建线程的差别

一、Runnable和Thread的区别

继承性:Thread是一个类,因此如果继承Thread类,子类就不能再继承其他的类了 ,而实现Runnable接口可以继承其他类,这样可以避免Java中单继承带来的限制。

接口性:Runnable是一个接口,需要实现run()方法,而Thread是一个类,可以直接创建对象,无需实现接口。

代码耦合:使用Runnable可以将任务的代码线程的代码解耦,从而可以更加灵活地组织代码。

线程状态:创建Thread对象后,可以直接调用start()方法启动线程,而使用Runnable需要先创建Thread对象,然后将Runnable对象传递给Thread对象,最后调用start()方法启动线程。

资源共享:

Thread线程是独立的不共享资源,Runnable是资源共享;

Runnable 表示一个线程的顶级接口,Thread 类其实是实现了 Runnable 这个接口,我们在使用的时候都需要实现 run 方法

明确一点:RunnableThread 本质上是没有区别的。

Runnable就只有一个方法:

二、使用哪种方式更适合不同的场景

继承Thread类的方式适用于需要继承自定义线程类的情况。如果需要对线程类进行自定义的扩展,例如重写Thread类的方法来改变线程的行为,那么继承Thread类就是一个不错的选择。

实现Runnable接口的方式更加灵活和可扩展,因为它可以避免Java中单继承的限制,也可以让任务的代码和线程的代码解耦。如果任务的代码比较复杂,或者需要在多个线程中复用,那么使用实现Runnable接口的方式会更加合适。

知识来源:

【2023年面试】创建线程有哪些方式_哔哩哔哩_bilibili

Runnable 和 Thread 有什么区别_thread和runnable区别_猹里。的博客-CSDN博客

https://www.cnblogs.com/winton-nfs/p/14172040.html

每日五问(java)_thread和runnable区别_Nicholas_giao的博客-CSDN博客

Thread 和 Runnable 的区别_thread和runnable区别_逍遥ovo的博客-CSDN博客

相关推荐
better_liang6 小时前
每日Java面试场景题知识点之-消息队列MQ核心场景与实战
java·面试·kafka·消息队列·rabbitmq·rocketmq·mq
小江的记录本6 小时前
【JVM虚拟机】垃圾回收GC:四种引用类型:强引用、软引用、弱引用、虚引用(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
better_liang7 小时前
每日Java面试场景题知识点之-SpringBoot启动流程
java·面试·springboot·源码解析·启动流程
Raink老师7 小时前
【AI面试临阵磨枪-69】如何设计一个支持百万级工具的 Agent 系统?如何快速路由与选择工具?
人工智能·面试·职场和发展
Raink老师8 小时前
【AI面试临阵磨枪-77】音视频 + AI:实时字幕、翻译、降噪、虚拟人、多模态对话
人工智能·面试·音视频
洛水水11 小时前
【力扣100题】53.最长回文子串
算法·leetcode·职场和发展
Raink老师11 小时前
【AI面试临阵磨枪-76】社交 AI:内容生成、审核、智能回复、多模态理解、安全治理
人工智能·安全·面试
仙俊红11 小时前
Integer\int对比,equals()\hashcode面试
java·面试·职场和发展
kyriewen11 小时前
手写虚拟DOM后,我反问面试官:key为什么不能用index?
前端·react.js·面试
长谷深风11112 小时前
Java 面试高频:反射机制与异常体系全面解析
java·开发语言·面试·exception·java 反射·java 异常·class 对象