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

yizhihongxing

Java中实现多线程有两种方式:使用Thread类和使用Runnable接口。这两种方式最主要的区别就是,使用Runnable实现的多线程程序可以多个线程共享同一个实例变量,而使用Thread实现的多线程程序则不行,每个线程都会拥有自己独立的实例变量。下面我们分别来详细讲解。

一、使用Thread类实现多线程

  1. 通过继承Thread类并重写run方法来实现多线程。线程启动之后,会自动调用run方法,以此完成线程的功能。

示例代码:

public class MyThread extends Thread {
    private String name;
    public MyThread(String name) {
        this.name = name;
    }
    public void run() {
        for (int i = 1; i <= 10; i++) {
            System.out.println(name + "运行第" + i + "次");
        }
    }
}

public class TestMyThread {
    public static void main(String[] args) {
        MyThread t1 = new MyThread("线程1");
        MyThread t2 = new MyThread("线程2");
        t1.start();
        t2.start();
    }
}
  1. 通过创建Thread类的匿名对象来实现多线程。这种方式比较简单,但是不方便对对象进行操作。

示例代码:

public class TestAnonymousThread {
    public static void main(String[] args) {
        new Thread() {
            public void run() {
                for (int i = 1; i <= 10; i++) {
                    System.out.println("线程1运行第" + i + "次");
                }
            }
        }.start();

        new Thread() {
            public void run() {
                for (int i = 1; i <= 10; i++) {
                    System.out.println("线程2运行第" + i + "次");
                }
            }
        }.start();
    }
}

二、使用Runnable接口实现多线程

使用Runnable实现多线程的步骤是:创建Runnable接口的实例化对象,将该实例化对象交给Thread类的构造方法,然后调用start方法启动线程。

示例代码:

public class MyRunnable implements Runnable {
    private int ticket = 5;
    public void run() {
        for (int i = 1; i <= 10; i++) {
            if (ticket > 0) {
                System.out.println("卖票:ticket = " + ticket--);
            }
        }
    }
}

public class TestRunnable {
    public static void main(String[] args) {
        MyRunnable r = new MyRunnable();
        Thread t1 = new Thread(r);
        Thread t2 = new Thread(r);
        Thread t3 = new Thread(r);
        t1.start();
        t2.start();
        t3.start();
    }
}

以上是Java中使用Thread类和Runnable接口实现多线程的区别,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中使用Thread类和Runnable接口实现多线程的区别 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Linux hostname主机名配置文件/etc/hosts详解

    下面是关于“Linux hostname主机名配置文件/etc/hosts详解”的完整攻略: Linux主机名 Linux主机名是一个唯一的名称,用于标识并区分网络中的不同计算机。Linux主机名通常由两个部分组成:主机名和域名。例如,主机名为“ubuntu”,域名为“example.com”,则完整的主机名为“ubuntu.example.com”。 查看…

    other 2023年6月25日
    00
  • 鸢尾花(iris)数据集

    鸢尾花数据集(Iris Dataset)攻略 鸢尾花数据集是机器学习领域中最常用的数据集之一,由英国统计学家Ronald Fisher于6年收集整理。该数据集包含了150个样本,每个样本包含了鸢尾的4个特征:花萼长度(pal length)、花萼宽度(sepal width)、花瓣长度(petal length)和花瓣宽度(petal width),以及它们…

    other 2023年5月7日
    00
  • (网页)js实现alert中显示换行的方法

    (网页)js实现alert中显示换行的方法 在网页中,我们常常需要通过alert()函数弹出提示框来向用户展示一些信息。然而,在某些情况下,我们需要在提示框中展示一些较长的文本信息,而默认的alert()函数只能显示单行文本,这就会导致文本被截断而影响信息展示。本篇文章将介绍一种实现在alert()函数中实现换行的方法。 解决方案 为了实现换行,我们可以在需…

    其他 2023年3月28日
    00
  • 批处理(bat)获取指定目录下的所有文件列表

    下面是批处理获取指定目录下的所有文件列表的攻略: 步骤1:设置工作目录 批处理程序执行时需要知道它所在的工作目录,因此我们需要先将其设置为指定目录。使用 cd 命令即可轻松完成: cd /d D:\example\folder 这里将工作目录设置为了 D:\example\folder。 步骤2:获取指定目录下的所有文件列表 使用 dir 命令可以列出指定目…

    other 2023年6月26日
    00
  • k8s service nodePort无法访问的问题解决

    针对“k8s service nodePort无法访问的问题解决”这一问题,以下是一份完整的攻略: 问题分析 Kubernetes中的Service可以将一组Pod封装成一个虚拟的Service,并赋予一个唯一的ClusterIP。但是,有时候当我们使用Service中定义了一个nodePort时,可能会出现无法访问的问题。这可能与以下几个因素有关: 节点的…

    other 2023年6月26日
    00
  • Git+VS2015修改提交代码以及解决冲突

    Git+VS2015修改提交代码以及解决冲突 Git是常用的版本控制工具,而Visual Studio 2015是常用的IDE,本文将介绍如何使用Git和VS2015进行代码修改、提交、拉取、推送以及解决冲突等操作。 安装Git 首先需要安装Git客户端,官方网站为https://git-scm.com/,选择相应的操作系统的安装程序,按照提示进行安装即可。…

    其他 2023年3月28日
    00
  • Android应用的多语言支持的实现方法

    Android应用的多语言支持的实现方法 在Android应用中实现多语言支持可以让应用适应不同地区和语言的用户。下面是一种常用的实现方法: 1. 准备多语言资源文件 首先,需要为每种语言准备对应的字符串资源文件。在res目录下创建一个新的目录,命名为values-xx,其中xx是语言的ISO 639-1代码,例如values-en表示英语,values-z…

    other 2023年8月5日
    00
  • 太吾绘卷新建人物报错怎么办 正式版新建人物报错解决方法

    以下是详细的完整攻略: 问题描述 在使用“太吾绘卷”工具的过程中,有时候会出现新建人物时报错的情况,这个问题在正式版中也会出现。本文将为大家提供解决这个问题的方法。 解决方法 1. 清空缓存 如果在新建人物时遇到报错,我们可以首先尝试清空缓存,这是一个常规的解决方法。具体步骤如下: 在工具左侧导航栏中选择“设置”,然后选择“高级设置”。 然后在“高级设置”中…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部