Java中创建线程的两种方式详细说明

 更新时间:2023年11月17日 09:55:34   作者:牧码ya  
这篇文章主要介绍了Java中创建线程的两种方式详细说明,Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例,每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码,需要的朋友可以参考下

Java中创建线程的两种方式

创建线程方式一

通过继承Thread类来创建并启动多线程

Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。 Java中通过继承Thread类来创建并启动多线程的步骤如下:

  1. 定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把run()方法称为线程执行体
  2. 创建Thread子类的实例,即创建了线程对象
  3. 调用线程对象的start()方法来启动该线程

自定义线程类:

/**
 * 自定义线程类
 */
public class MyThread extends Thread {
    public MyThread(String name){
        super(name);
    }

    @Override
    public void run() {
        for(int i = 1; i <= 20; i++){
            System.out.println(getName() + " " + i);
        }
    }
}

测试类:

/**
 * 创建线程方式一:
 *  1. 创建自定义类继承Thread类
 *  2. 重写run方法(run方法就是新的线程要执行的代码)
 *  3. 创建自定义类对象(线程对象)
 *  4. 调用start方法开启新的线程
 */
public class Demo01 {
    public static void main(String[] args) {
        System.out.println("main线程开启");
        // 创建线程对象
        MyThread myThread = new MyThread("线程A");
        // 开启新的线程myThread
        myThread.start();

        // 这个循环在main线程中执行
        for (int i = 1; i <= 20; i++) {
            System.out.println("mian线程 " + i);
        }
    }
}

创建线程方式二

通过实现Runnable类来创建并启动多线程

采用java.lang.Runnable 也是非常常见的一种,我们只需要重写run方法即可 步骤如下:

  1. 定义Runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体
  2. 创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象
  3. 调用线程对象的start()方法来启动线程

代码如下:

public class MyRunnable implements Runnable {

    @Override
    public void run() {
        for (int i = 1; i <= 20; i++) {
            System.out.println(Thread.currentThread().getName() + " " + i);
        }
    }
}
/**
 * 创建线程方式二:
 *  1. 定义自定义类实现Runnable接口
 *  2. 重写run方法
 *  3. 创建自定义对象
 *  4. 创建Threed对象的时候,作为构造方法的参数进行传递
 *  5. 启动线程start方法
 */
public class Demo02 {
    public static void main(String[] args) {
        // 创建线程任务对象
        MyRunnable myRunnable = new MyRunnable();

        // 创建线程对象
        Thread t1 = new Thread(myRunnable, "线程A");
        Thread t2 = new Thread(myRunnable, "线程B");

        // 开启线程
        t1.start();
        t2.start();
    }
}

到此这篇关于Java中创建线程的两种方式详细说明的文章就介绍到这了,更多相关Java中创建线程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java轻松实现Excel与CSV格式互转(含批量转换)

    Java轻松实现Excel与CSV格式互转(含批量转换)

    在 Java 开发中,经常会遇到需要在 Excel 和 CSV 文件之间进行数据转换的场景,本文将分享如何在 Java 中实现单文件和批量的 Excel 与 CSV 转换方法,希望对大家有所帮助
    2025-09-09
  • springboot Validated失效的问题及解决思路

    springboot Validated失效的问题及解决思路

    文章主要介绍了Java Bean Validation(JSR 303/JSR 349)和Hibernate Validator的基本用法,包括常用注解的使用、@Valid和@Validated注解的区别、如何自定义校验注解以及如何在Spring Boot中使用这些校验机制
    2026-01-01
  • Java IO文件后缀名过滤总结

    Java IO文件后缀名过滤总结

    本篇文章给大家详细讲述了Java IO文件后缀名过滤的相关知识点,以及实例代码分享,有需要的朋友跟着小编一起学习下。
    2018-02-02
  • Java中队列(Queue)和列表(List)的区别解析

    Java中队列(Queue)和列表(List)的区别解析

    Java中的列表(List)和队列(Queue)是两种常用的数据结构,它们分别用于不同的场景,列表是有序的,支持随机访问,允许重复元素,并且可以通过索引插入或删除元素,下面通过本文给大家介绍Java中队列(Queue)和列表(List)的区别,感兴趣的朋友一起看看吧
    2025-03-03
  • Java从服务端下载Excel模板文件的两种方法

    Java从服务端下载Excel模板文件的两种方法

    这篇文章主要为大家详细介绍了Java从服务端下载Excel模板文件的两种方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Java中switch的三种用法方式小结

    Java中switch的三种用法方式小结

    这篇文章主要介绍了Java中switch的三种用法方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Spring Boot Logback配置日志过程解析

    Spring Boot Logback配置日志过程解析

    这篇文章主要介绍了Spring Boot Logback配置日志过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 解决IntelliJ IDEA输出中文显示为问号问题的有效方法

    解决IntelliJ IDEA输出中文显示为问号问题的有效方法

    最近刚学到文件字节流这里,但输出中文时,出现了控制台输出问号的情况,所以下面这篇文章主要给大家介绍了关于如何解决IntelliJ IDEA输出中文显示为问号问题的有效方法,需要的朋友可以参考下
    2022-07-07
  • Java实现文件上传和url格式校验工具

    Java实现文件上传和url格式校验工具

    这篇文章主要介绍了如何使用Java实现文件上传和url格式校验工具,主要用于文件类型校验,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2026-04-04
  • SpringMVC集成FastJson使用流程详解

    SpringMVC集成FastJson使用流程详解

    如果你使用 Spring MVC 来构建 Web 应用并对性能有较高的要求的话,可以使用 Fastjson 提供的FastJsonHttpMessageConverter 来替换 Spring MVC 默认的 HttpMessageConverter 以提高 @RestController @ResponseBody @RequestBody 注解的 JSON序列化速度
    2023-02-02

最新评论