当前位置: 首页 > news >正文

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

 

 

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

 

面试题:

用Thread和Runable创建线程的差别

一、Runnable和Thread的区别

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

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

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

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

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

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

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

知识来源:

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

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

http://www.lryc.cn/news/140069.html

相关文章:

  • Desnet模型详解
  • clickhouse-压测
  • AI夏令营第三期用户新增挑战赛学习笔记
  • pdf转ppt软件哪个好用?推荐一个好用的pdf转ppt软件
  • Linux 内核函数kallsyms_lookup_name
  • 强化学习在游戏AI中的应用与挑战
  • 6 Python的异常处理
  • 【跨语言通讯】
  • Android 基础知识
  • Linux常用命令_帮助命令、用户管理命令、压缩解压命令
  • 解决 KylinOS “Could not get lock /var/lib/dpkg/lock”错误
  • PHP pdf 自动填写表单
  • Win2016Server绑定多网卡实现负载均衡
  • 微软宣布在 Excel 中使用 Python:结合了 Python 的强大功能和 Excel 的灵活性。
  • 学习心得03:OpenCV
  • ubuntu学习(五)----读取文件以及光标的移动
  • Python 数据分析——matplotlib 快速绘图
  • uniapp小程序位置信息配置
  • 《基于 Vue 组件库 的 Webpack5 配置》1.模式 Mode 和 vue-loader
  • 01.sqlite3学习——数据库概述
  • 视频集中存储/云存储平台EasyCVR国标GB28181协议接入的报文交互数据包分析
  • 容器技术,1. Docker,2. Kubernetes(K8s):
  • Jtti :sql server怎么备份数据库?
  • Stable Diffusion 系列教程 | 打破模型壁垒
  • Cypress 做 e2e 测试,如何在获得某个 checkbox 后先判断它是否被 check 然后再更改它的状态?
  • 基于PIC单片机温度-脉搏-DS18B20温度-液晶12864显示(proteus仿真+源程序)
  • 【C++进阶(一)】STL大法以及string的使用
  • leetcode做题笔记99. 恢复二叉搜索树
  • 24 | 紧跟时代步伐:微服务模式下API测试要怎么做?
  • 【论文阅读】POIROT:关联攻击行为与内核审计记录以寻找网络威胁(CCS-2019)