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

yizhihongxing

下面是讲解“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日

相关文章

  • 详解spring与jdbc整合操作

    详解spring与jdbc整合操作 1. Spring JDBC介绍 Spring JDBC是spring框架中最重要的部分之一,提供了一组用于执行SQL操作和访问关系型数据库的类和接口。 Spring JDBC提供的主要API为JdbcTemplate和NamedParameterJdbcTemplate,以及支持Transaction(事务)和DAO(数…

    Java 2023年5月20日
    00
  • 一个通用的jsp分页PageBean

    下面我将为您详细讲解一个通用的JSP分页PageBean的完整攻略。 一、什么是PageBean? PageBean可以说是我们在Web开发中经常使用的一种数据封装类,在实现数据分页时,我们可以将分页相关的一些参数和数据封装到PageBean中。这样做的好处是,我们可以很方便的对分页进行控制。 二、如何实现一个通用的PageBean? 1. 编写PageBe…

    Java 2023年6月15日
    00
  • Java对象存储内存布局详解

    Java对象存储内存布局详解 Java 是一门面向对象的编程语言,因此在 Java 程序中创建对象是很常见的。在 Java 虚拟机(JVM)中,对象在内存中是如何存储和布局的呢?接下来我们将详细介绍 Java 对象存储内存布局的实现。 Java对象存储 Java 对象有两种主要的存储区域:堆和栈。 堆:是 Java 程序中最常见的内存区域,用来存储所有的对象…

    Java 2023年5月26日
    00
  • JavaWeb实现mysql数据库数据的添加和删除

    下面是“JavaWeb实现mysql数据库数据的添加和删除”的完整攻略。 简介 JavaWeb是一个基于Java语言的Web开发框架,可以使用Java语言轻松实现Web应用的开发。而mysql是一种开源的关系型数据库管理系统,目前非常受欢迎。本文将详细介绍如何使用JavaWeb实现mysql数据库数据的添加和删除。 准备工作 JDK(Java Develop…

    Java 2023年5月19日
    00
  • java统计字符串中指定元素出现次数方法

    Java统计字符串中指定元素出现次数方法攻略 在Java中统计字符串中指定元素出现次数,我们通常有以下几种方法: 1. 使用正则表达式 我们可以使用正则表达式来匹配指定元素出现的次数。下面是一个示例代码: public static int countOccurrencesUsingRegex(String str, String element) { St…

    Java 2023年5月27日
    00
  • java中面向对象的概念及知识点总结

    Java中面向对象的概念及知识点总结 一、面向对象的概念 面向对象(Object-oriented,O-O)是一种软件开发思想,它主要强调将问题看作是由各种不同对象之间的交互关系构成的。 O-O 中的“对象”是指拥有属性(变量)和方法(函数)的实体。这些对象通过通信来完成特定任务。O-O 中的“类”是指一组具有相同属性和方法的对象的抽象描述。在 Java 中…

    Java 2023年5月26日
    00
  • JAVA常用API总结与说明

    JAVA常用API总结与说明 1. String类 String类是Java中常用的字符串类,提供了一系列字符串的操作方法。 以下是String类常用的方法: length():返回字符串的长度 charAt(int index):返回指定索引位置的字符 substring(int beginIndex, int endIndex):返回指定区间的子字符串 …

    Java 2023年5月23日
    00
  • java实现打印日历

    讲解“Java实现打印日历”的完整攻略,步骤如下: 1. 确定打印日历的时间范围 首先需要确定要打印的日历的时间范围,可以让用户输入年份和月份,也可以默认打印当前月份的日历,这里我们以用户输入年份和月份为例。 2. 实现核心算法 接下来需要实现核心算法,根据用户输入的年份和月份,计算出该月份的第一天是星期几,以及该月份有多少天。这里使用Java的Calend…

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