Java开启新线程并传参方法代码实现

下面是讲解“Java开启新线程并传参方法代码实现”的完整攻略:

内容概述

  • 基本概念介绍
  • 传统开启线程方式
  • Java 8 Lambda表达式实现开启线程
  • Java 8 方法引用实现开启线程

基本概念介绍

在线程编程中,有两种常见的线程启动方式:

  1. 继承Thread类,重写run方法,调用start方法启动线程。
  2. 实现Runnable接口,将Runnable实现类的实例作为Thread的构造参数,调用start方法启动线程。

而在开启新线程时需要给线程传递参数时,一般常见的做法有两种:

  1. 将参数封装在自定义的类中,在线程启动时将该类的实例作为线程构造函数的参数传入。
  2. 使用Java 8中的Lambda表达式或方法引用,将需要执行的代码块作为参数传入。

传统开启线程方式

以下是基于Thread类和Runnable接口的传统线程开启方式中的示例代码:

class MyRunnable implements Runnable {
    private int num;
    public MyRunnable(int num){
        this.num = num;
    }

    @Override
    public void run() {
        System.out.println("传统方式创建线程Runnable参数:" + this.num);
    }
}

class MyThread extends Thread {
    private int num;
    public MyThread(int num){
        this.num = num;
    }

    @Override
    public void run() {
        System.out.println("传统方式创建线程Thread参数:" + this.num);
    }
}

public class Main {
    public static void main(String[] args) {
        Thread t1 = new MyThread(111);
        t1.start();

        Runnable r1 = new MyRunnable(222);
        Thread t2 = new Thread(r1);
        t2.start();
    }
}

从上面的代码可以看出,每个线程需要传递的参数都需要在MyRunnable和MyThread内部进行定义和传递。如果需要传递多个参数,则需要定义多个变量,在实现代码中进行传递。

Java 8 Lambda表达式实现开启线程

接下来,我们看一下Java 8中通过Lambda表达式实现开启线程,代码如下:

public class Main {
    public static void main(String[] args) {
        // lambda表达式方式创建线程
        new Thread(() -> {
            System.out.println("Lambda方式创建线程无参数");
        }).start();

        int num = 333;
        new Thread(() -> {
            System.out.println("Lambda方式创建线程参数:" + num);
        }).start();
    }
}

通过Lambda表达式方式创建线程时,无需为线程的构造函数传入任何参数。代码简单清晰,直接对需要执行的代码块进行传递即可。如果需要使用到外部变量,则需要将变量定义为final或effectively final,也就是变量的值在代码块中不会发生改变。如示例代码中的num变量。

Java 8方法引用实现开启线程

除了使用Lambda表达式来创建线程之外,我们还可以使用Java 8的方法引用来创建线程。示例代码如下:

public class Main {
    public static void main(String[] args) {
        // 方法引用方式创建线程
        new Thread(Main::runnable).start();

        int num = 444;
        new Thread(() -> Main.runnableParam(num)).start();
    }

    public static void runnable() {
        System.out.println("方法引用方式创建线程无参数");
    }

    public static void runnableParam(int num) {
        System.out.println("方法引用方式创建线程参数:" + num);
    }
}

方法引用方式可以选择一个已存在的方法作为线程执行代码块,并将其作为参数传递给Thread实例的构造方法。也可像Lambda表达式那样使用箭头“->”,将需要执行的方法进行传递。在方法引用中,可以直接将该类中已存在的静态方法或实例方法名作为参数进行传递,不需要进行任何的重写和复制操作。

总结

  • Java开启新线程的传统实现方式是基于Thread类和Runnable接口的。
  • 使用Lambda表达式和方法引用可以简化线程启动代码,提高代码可读性。
  • 在线程启动时需要传递参数时,可以将参数封装在自定义的类中,或者使用Lambda表达式或方法引用直接将需要执行的代码块进行传递,避免了在实现代码中进行传递的麻烦。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java开启新线程并传参方法代码实现 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Java中redis的基本类型

    以下是 “Java中redis的基本类型”的详细攻略。 什么是Redis Redis是一个开源的基于键值对存储的NoSQL数据库系统。它支持字符串、列表、集合、有序集合、哈希表等数据类型,同时也支持发布订阅、事务、Lua脚本等高级功能。Redis的主要优势是性能高、稳定性强,同时支持丰富的数据类型和数据结构。 Redis中的基本数据类型 字符串类型 Redi…

    Java 2023年5月20日
    00
  • Spring Security常用过滤器实例解析

    接下来我将为您详细讲解 Spring Security 常用过滤器实例解析的完整攻略。 1. Spring Security 常用过滤器简介 Spring Security 是一种强大且高度可定制的认证和授权框架,它为 Web 应用程序提供了安全性。Spring Security 通过使用一系列过滤器来保护应用程序,并控制对资源的认证和授权访问。Spring…

    Java 2023年5月20日
    00
  • SpringBoot详解整合Spring Boot Admin实现监控功能

    SpringBoot详解整合Spring Boot Admin实现监控功能 简介 Spring Boot Admin是用于管理和监控一个或多个Spring Boot应用程序的应用程序。相比于spring-boot-actuator,默认Web UI很友好。此外,它还提供了以下功能: 显示应用程序的元数据(例如:Git提交信息,构建时间等) 显示健康检查状态以…

    Java 2023年5月19日
    00
  • mybatis-plus 如何操作json字段

    mybatis-plus 支持操作 JSON 数据类型,官方文档也提供了详细的使用说明,下面我来具体讲解如何操作 JSON 字段的完整攻略,包括如何插入、修改、查询和删除 JSON 数据。 1. 插入 JSON 数据 插入 JSON 数据可以使用 MyBatis-Plus 提供的 com.baomidou.mybatisplus.extension.hand…

    Java 2023年5月26日
    00
  • 详解SpringBoot项目整合Vue做一个完整的用户注册功能

    我们来详细讲解一下“详解SpringBoot项目整合Vue做一个完整的用户注册功能”。这个攻略分两个部分:服务器端和客户端。我们分别来讲解。 服务器端 1. 创建SpringBoot项目 首先,我们需要在IDE中创建一个SpringBoot项目。可以使用Spring Initializr创建一个简单的Java Web项目,或者自己使用Maven创建。 2. …

    Java 2023年5月20日
    00
  • 图文详解Maven工程打jar包的N种方式

    图文详解Maven工程打jar包的N种方式 在Maven工程开发中,打jar包是必不可少的步骤之一。本文将介绍多种方式打jar包的方法并逐一详细讲解。下面为大家列出打jar包的多种方法: 通过Maven命令打jar包 通过Maven插件打可执行的jar包 通过Maven插件打普通jar包 通过Maven配置pom.xml文件打jar包 利用Maven打jar…

    Java 2023年5月20日
    00
  • 快速搭建SSM框架(Maven)五步曲的方法步骤

    下面我将详细讲解快速搭建SSM框架(Maven)五步曲的方法步骤。具体步骤如下: 1. 创建一个基于Maven的Web项目 <groupId>com.example</groupId> <artifactId>ssm-demo</artifactId> <version>1.0</versio…

    Java 2023年5月20日
    00
  • SpringBoot整合log4j日志与HashMap的底层原理解析

    SpringBoot整合log4j日志与HashMap的底层原理解析 1. 准备工作 在开始整合log4j日志与HashMap之前,需要先完成以下准备工作: 确保已经安装好相应版本的jdk、Maven工具和SpringBoot框架。 创建一个空的SpringBoot应用程序,可以使用Spring Initializr等工具或者手动创建项目。 2. 添加依赖 …

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部