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

Runnable和Thread的区别,以及如何调用start()方法

RunnableThread都是Java多线程编程中的核心概念,它们之间存在以下主要差异:

  1. Runnable是一个接口,而Thread是一个类。这意味着我们可以通过实现Runnable接口来创建线程,或者直接继承Thread类并重写其方法。
  2. Runnable只包含一个run方法,这是线程的主体部分。当我们想要创建一个新线程时,需要实例化一个Runnable对象并将其传入Thread的构造函数中。相比之下,Thread类可以直接调用其run方法。
  3. 从语法和结构上看,使用Runnable接口的方式更为灵活和推荐,因为Java不支持多重继承,但可以实现多个接口。通过实现Runnable接口并传递给Thread类,我们可以更容易地共享和管理线程代码。
  4. 在实际应用中,当一个类已经继承了另一个类(例如自定义的视图类或其他框架中的类),那么这个类就不能再继承Thread类。但是,它可以实现Runnable接口并通过其他方式创建线程。

 

RunnableThread都需要调用start()方法来启动线程。

对于Runnable接口,我们需要创建一个实现该接口的类,并重写其run()方法。然后,我们可以创建一个新的Thread对象,将实现了Runnable接口的类的实例作为参数传递给它,最后调用start()方法来启动线程。

class MyRunnable implements Runnable {@Overridepublic void run() {// 线程主体部分的代码}
}public class Main {public static void main(String[] args) {MyRunnable myRunnable = new MyRunnable();Thread thread = new Thread(myRunnable);thread.start(); // 启动线程}
}

对于Thread类,我们可以直接继承它并重写其run()方法。然后,我们可以创建一个新的Thread对象(即子类的对象),最后调用start()方法来启动线程。示例代码如下:

class MyThread extends Thread {@Overridepublic void run() {// 线程主体部分的代码}
}public class Main {public static void main(String[] args) {MyThread myThread = new MyThread();myThread.start(); // 启动线程}
}

 

 

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

相关文章:

  • 云音乐Android Cronet接入实践
  • Linux dup和dup2
  • Spring Boot实战 | 如何整合高性能数据库连接池HikariCP
  • Spring依赖注入
  • Linux下Jenkins自动化部署SpringBoot应用
  • 【git 学习】--- ubuntu18.04 搭建本地git服务器
  • JAVA电商平台免费搭建 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城
  • Android 13 Framework 裁剪
  • 【Axios封装示例Vue2】
  • k8s-----20、持久化存储--PV/PVC
  • python matplotlib 生成矢量图
  • 机器学习中常见的特征工程处理
  • Spring IOC 和 AOP
  • echarts插件-liquidFill(水球图)
  • c++ vscode cmake debug for mac
  • 17 结构型模式-享元模式
  • 创建Secret(手动)
  • 基于PHP的线上购物商城,MySQL数据库,PHPstudy,原生PHP,前台用户+后台管理,完美运行,有一万五千字论文。
  • Lua 事件触发机制(注册,触发)
  • c++ 并发与多线程(12)线程安全的单例模式-1
  • Python学习笔记--迭代
  • idea免费插件分享
  • Pytorch使用torch.utils.data.random_split拆分数据集,拆分后的数据集状况
  • 每日一练 | 华为认证真题练习Day122
  • SQL sever中函数(2)
  • win10专业版驱动开发
  • 【JavaEE】网络编程---TCP数据报套接字编程
  • 用 Go 访问 MySql 数据库
  • mac 升级node到指定版本
  • 欢迎进QQ群讨论交流