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

Thread 和 Runnable 的区别

Thread 和 Runnable 接口的区别有四个:
  • Thread 是一个类,Runnable 是接口,因为在 Java 语言里面的继承特性,接口可以支持多继承,而类只能单一继承。所以如果在已经存在继承关系的类里面要实现线程的话,只能实现 Runnable 接口。
  • Runnable 表示一个线程的顶级接口,Thread 类其实是实现了 Runnable 这个接口,我们在使用的时候都需要实现 run 方法。
  • 站在面向对象的思想来说,Runnable 相当于一个任务,而 Thread 才是真正处理的线程,所以我们只需要用 Runnable 去定义一个具体的任务,然后交给 Thread 去处理就可以了,这样达到了松耦合的设计目的。
  • 接口表示一种规范或者标准,而实现类表示对这个规范或者标准的实现,所以站在线程的角度来说,Thread 才是真正意义上的线程实现。Runnable 表示线程要执行的任务,因此在线程池里面,提交一个任务传递的类型是Runnable。
所以,基于这四个点的原因,所以在实际应用中,建议实现 Runnable 接口实现线程的任务定义,然后使用 Thread 的 start 方法去启动启动线程并执行 Runnable 这个任务。
public class MyRunnable implements Runnable {@Overridepublic void run() {// 定义具体的任务逻辑System.out.println("Executing my task...");}
}public class Main {public static void main(String[] args) {// 创建Runnable实例Runnable myRunnable = new MyRunnable();// 创建Thread实例并将任务分配给线程Thread thread = new Thread(myRunnable);// 启动线程thread.start();}
}
http://www.lryc.cn/news/210515.html

相关文章:

  • 图神经网络和分子表征:5. Completeness
  • css-渐变色矩形
  • 使用easypoi-spring-boot-starter 4.1.1导入excel报错NoSuchMethodError和NoSuchMethodError
  • matlab中类的分别之handle类和value类——matlab无法修改类属性值的可能原因
  • 3. t2t_vit inference
  • SpringMVC Day 05 : Spring 中的 Model
  • redis6.0源码分析:字典扩容与渐进式rehash
  • 【C++迭代器iterator】
  • 基于群居蜘蛛算法的无人机航迹规划
  • 火爆全网,Python+Requests+Pytest+YAML+Allure实现接口自动化测试(附源码)
  • 【深度学习】【NLP】如何得到一个分词器,如何训练自定义分词器:从基础到实践
  • 线程池的线程回收
  • 【2023.10.25练习】数据库-函数1
  • 基于水循环算法的无人机航迹规划-附代码
  • JVM调优(10)JVM的运行时数据区
  • Python网络爬虫介绍
  • iOS QR界面亮度调整
  • Linux shell编程学习笔记17:for循环语句
  • Go语言用Resty库编写的音频爬虫代码
  • AWTK 液体流动效果控件发布
  • 对mysql的联合索引的深刻理解
  • C的自定义类型
  • 我的创作纪念日 - 2048
  • 拿捏面试官,高频接口自动化测试面试题总结(附答案)狂收offer...
  • 大数据-Storm流式框架(六)---Kafka介绍
  • 自动驾驶的未来展望和挑战
  • 2.11、自定义图融合过程与量化管线
  • Linux——文件权限属性和权限管理
  • 数组与链表算法-单向链表算法
  • Oracle(6) Control File