广告
返回顶部
首页 > 资讯 > 精选 >Java中使用Thread类和Runnable接口实现多线程的区别是什么
  • 583
分享到

Java中使用Thread类和Runnable接口实现多线程的区别是什么

2023-07-02 15:07:44 583人浏览 泡泡鱼
摘要

这篇“Java中使用Thread类和Runnable接口实现多线程的区别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“

这篇“Java中使用Thread类和Runnable接口实现多线程的区别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java中使用Thread类和Runnable接口实现多线程的区别是什么”文章吧。

使用Thread类和Runnable接口实现多线程的区别

先看两种实现方式的步骤:

public class ThreadDemo{    public static void main(String[] args) {        for (int i = 0; i < 5; i++) {            //创建并启动由继承Thread类创建的线程            new Thread(new MyThread(),"Thread"+i).start();             //创建并启动由实现Runnable接口创建的线程            new Thread(new Runner(),"Thread"+i).start();        }    }}//继承Thread类class MyThread extends Thread{    //重写run方法    @Override    public void run() {        System.out.println(Thread.currentThread().getName()+"由继承Thread创建");    }}//实现Runnable接口class Runner implements Runnable{    //实现run方法    @Override    public void run() {        System.out.println(Thread.currentThread().getName()+"有实现Runnable接口创建");    }}

从上面代码可以看出,当使用Runnable接口创建多线程时,需要将实现类作为参数出入到Thread实例对象中,通过调用Thread对象的start方法进行启动。我们来看一下Thread的源码

//Thread类继承了Runnable类public class Thread implements Runnable {}//Thread的构造函数调用了init方法public Thread(Runnable target) {        init(null, target, "Thread-" + nextThreadNum(), 0);}//init调用了静态方法initprivate void init(ThreadGroup g, Runnable target, String name,                      long stackSize) {        init(g, target, name, stackSize, null, true);}//再看静态方法initprivate void init(ThreadGroup g, Runnable target, String name,                  long stackSize, AccessControlContext acc,                  boolean inheritThreadLocals) {        ...        //私有Runnable实例        this.target = target;        ...}//再看一下Runnable方法@Overridepublic void run() {    if (target != null) {        target.run();    }}

从以上追踪源码过程可以看出,Thread类实现了 Runnable 接口,而继承Thread类重写 run 方法本质就是实现Runnable接口的 run 方法。

通过以上分析,总结使用 Thread 类和 Runnable 接口的区别:

  • 使用继承 Thread 类实现多线程相比于 Runnable 更加简单,使用 Runnable 接口需要使用 Thread进行再次封装。

  • 由于 Java 中不支持多继承,一个类继承了 Thread 类后无法再继承其他类,因此使用 Runnable 接口实现多线程有更好的灵活性。

以上就是关于“Java中使用Thread类和Runnable接口实现多线程的区别是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: Java中使用Thread类和Runnable接口实现多线程的区别是什么

本文链接: https://www.lsjlt.com/news/342905.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中使用Thread类和Runnable接口实现多线程的区别是什么
    这篇“Java中使用Thread类和Runnable接口实现多线程的区别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2023-07-02
  • Java中使用Thread类和Runnable接口实现多线程的区别
    使用Thread类和Runnable接口实现多线程的区别 先看两种实现方式的步骤: public class ThreadDemo{ public static void m...
    99+
    2022-11-13
  • Java使用Runnable和Callable实现多线程的区别是什么
    这篇文章主要介绍“Java使用Runnable和Callable实现多线程的区别是什么”,在日常操作中,相信很多人在Java使用Runnable和Callable实现多线程的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-07-02
  • Java使用Runnable和Callable实现多线程的区别详解
    使用Runnable和Callable接口实现多线程的区别 先看两种实现方式的步骤: 1.实现Runnable接口 public class ThreadDemo{ publ...
    99+
    2022-11-13
  • 实现Runnable接口的多线程程序设计方法是什么
    这篇文章将为大家详细讲解有关实现Runnable接口的多线程程序设计方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现Runnable接口的多线程程序设计方法  Java语言中提供...
    99+
    2023-06-03
  • 什么是多线程?进程和线程的区别是什么?如何使用Java实现多线程?
    文章目录 前言我们为什么要使用线程而不是进程来实现并发编程什么是线程进程和线程的区别如何使用Java实现多线程创建线程1.创建一个继承 Thread 类的线程类2.实现 Runnable 接口匿名内部类方式实现 Runnable ...
    99+
    2023-08-19
    java JavaEE 多线程 进程
  • Java中抽象类和接口的区别是什么
    本篇内容介绍了“Java中抽象类和接口的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Java语言中, abstract cla...
    99+
    2023-06-17
  • php中继承类和实现接口的区别是什么
    本教程操作环境:windows10系统、PHP7.1版、DELL G3电脑php中继承类和实现接口的区别一、继承和实现接口的比较:(1)php继承属于单继承,保证了单一性,但不够灵活。实现接口是对单一继承的补充;(2)实现接口可以在不破坏类...
    99+
    2017-08-21
    PHP
  • Java中的抽象类和接口的两大区别分别是什么
    这篇文章给大家介绍Java中的抽象类和接口的两大区别分别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。抽象类和接口有什么区别什么情况下使用抽象类什么情况下使用接口抽象类和接口的不同:抽象函数为带有abstract...
    99+
    2023-06-02
  • Java中接口和数组的运用:Spring框架的实现方式是什么?
    在Java编程中,接口和数组是两种非常重要的概念。其中,接口是一种定义了方法和常量的抽象类型,而数组则是一种可以存储多个相同数据类型的容器。在实际的编程中,这两个概念经常被用来设计和实现各种复杂的程序。在本文中,我们将重点讨论Spring...
    99+
    2023-08-09
    接口 spring 数组
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作