Java创建子线程的两种方法

当我们需要在Java程序中创建一个新的线程时,我们有两种主要的方式。

方法一:通过继承Thread类创建线程

  1. 创建一个继承自Thread类的新类。
public class MyThread extends Thread {
    @Override
    public void run() {
        // 新线程执行的代码
    }
}
  1. 在该类中重写run()方法,将需要新线程执行的代码放在其中。
  2. 在主线程中创建该子线程并启动它。
MyThread myThread = new MyThread(); // 创建MyThread的实例

// 启动新线程
myThread.start();

// 等待新线程完成
try {
    myThread.join();
} catch (InterruptedException e) {
    // 异常处理
}

方法二:通过实现Runnable接口创建线程

  1. 实现Runnable接口。
public class MyRunnable implements Runnable {
    // 实现Runnable接口中的run()方法
    @Override
    public void run() {
        // 新线程执行的代码
    }
}
  1. 在该类中实现Runnable接口中的 run() 方法,将需要新线程执行的代码放在其中。
  2. 创建一个Thread对象,并将实现Runnable接口的类的实例传递给该对象的构造函数。
MyRunnable myRunnable = new MyRunnable(); // 创建实现Runnable接口的类的实例

// 通过实现Runnable接口创建新线程
Thread newThread = new Thread(myRunnable);

// 启动新线程
newThread.start();

// 等待新线程完成
try {
    newThread.join();
} catch (InterruptedException e) {
    // 异常处理
}

示例一:基于继承Thread类创建线程

public class MyThread extends Thread {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("Thread " + Thread.currentThread().getId() + ": " + i);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread thread1 = new MyThread();
        MyThread thread2 = new MyThread();

        thread1.start();
        thread2.start();
    }
}

该程序创建了两个线程,每个线程都输出其线程ID和计数器,最后输出的结果可能如下所示。

Thread 11: 0
Thread 12: 0
Thread 11: 1
Thread 12: 1
Thread 11: 2
Thread 12: 2
Thread 11: 3
Thread 12: 3
Thread 11: 4
Thread 12: 4
Thread 11: 5
Thread 12: 5
Thread 11: 6
Thread 12: 6
Thread 11: 7
Thread 12: 7
Thread 11: 8
Thread 12: 8
Thread 11: 9
Thread 12: 9

示例二:基于实现Runnable接口创建线程

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("Thread " + Thread.currentThread().getId() + ": " + i);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable();

        Thread thread1 = new Thread(myRunnable);
        Thread thread2 = new Thread(myRunnable);

        thread1.start();
        thread2.start();
    }
}

该程序创建了两个线程,每个线程都输出其线程ID和计数器,最后输出的结果可能如下所示。

Thread 11: 0
Thread 12: 0
Thread 11: 1
Thread 12: 1
Thread 11: 2
Thread 12: 2
Thread 11: 3
Thread 12: 3
Thread 11: 4
Thread 12: 4
Thread 11: 5
Thread 12: 5
Thread 11: 6
Thread 12: 6
Thread 11: 7
Thread 12: 7
Thread 11: 8
Thread 12: 8
Thread 11: 9
Thread 12: 9

以上两种方式创建的子线程字段都会运行其run()方法中的代码,我们可以通过调用thread.join()方法使主线程等待子线程完成后再执行后续的代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java创建子线程的两种方法 - Python技术站

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

相关文章

  • JavaWeb连接数据库MySQL的操作技巧

    下面就是“JavaWeb连接数据库MySQL的操作技巧”的攻略: 确认数据库信息 首先,在连接MySQL数据库之前,我们需要确认数据库的相关信息,包括MySQL服务器的地址、使用的端口号、用户名、密码以及要连接的数据库名称等。 导入JDBC驱动程序 在使用Java连接MySQL之前,需要将MySQL对应的JDBC驱动程序导入到Java的classpath路径…

    Java 2023年5月19日
    00
  • SpringMVC实现表单验证功能详解

    以下是关于“SpringMVC实现表单验证功能详解”的完整攻略,其中包含两个示例。 SpringMVC实现表单验证功能详解 SpringMVC是一种常用的Web开发框架,它提供了一种方便的方式来处理表单验证。在本文中,我们将讲解SpringMVC如何实现表单验证功能。 表单验证实现原理 SpringMVC表单验证是通过使用javax.validation A…

    Java 2023年5月17日
    00
  • Java实现飞机大战-连接数据库并把得分写入数据库

    Java实现飞机大战-连接数据库并把得分写入数据库的攻略如下: 第一步:建立数据库 创建一个数据库,可使用MySQL或其他数据库软件,此处以MySQL为例。 在该数据库下创建一个用户,拥有读写权限。 创建一个存储分数的数据表,可命名为score,包含两个字段,一个为id,一个为score。 示例代码如下: CREATE DATABASE games; GRA…

    Java 2023年5月20日
    00
  • Java两整数相除向上取整的方式详解(Math.ceil())

    Java中两个整数相除可能不是整数,因此需要进行取整。向上取整就是将小数部分向上一位取整到最近的整数。 Math类提供了向上取整方法 ceil()。 方法定义 public static double ceil(double a) 参数 a:需要向上取整的数。 返回值 返回double类型,表示a向上取整的结果。 示例说明 示例1 接下来我们看一个例子:计算…

    Java 2023年5月26日
    00
  • java导出到excel常用的几种方式总结

    Java导出到Excel常用的几种方式总结 在Java的开发中,我们经常会遇到将数据导出到Excel表格的需求。本文主要总结了Java导出到Excel常用的几种方式,包括使用POI、EasyExcel等框架实现导出,以及使用CSV格式和HTML格式导出的方法。 使用POI实现导出 Apache POI是一个Java API,用于处理Microsoft Off…

    Java 2023年5月26日
    00
  • 用javascript制作qq注册动态页面

    下面是用 JavaScript 制作 QQ 注册动态页面的攻略: 1. 前置知识 在进行动态页面制作前,需要掌握以下一些前置知识: HTML:前端页面标记语言,用于编写网页基本结构和内容; CSS:前端页面样式表语言,用于美化网页界面; JavaScript:前端脚本语言,用于实现网页交互和动画效果; DOM:文档对象模型,即用 JavaScript 操作页…

    Java 2023年6月15日
    00
  • SpringBoot监控Tomcat活动线程数来判断是否完成请求处理方式

    要实现Spring Boot监控Tomcat线程数并判断是否请求处理完成可以采用以下步骤: 1. 添加actuator依赖 要使用Spring Boot提供的监控功能,需要添加actuator依赖,具体方法是在项目的pom.xml文件中添加以下代码: <dependency> <groupId>org.springframework.…

    Java 2023年5月19日
    00
  • java获取当前时间的四种方法代码实例

    下面是完整的攻略。 介绍 在Java中,我们常常需要获取当前的时间,用于记录日志、统计应用程序的运行时长等等。本文将介绍四种获取当前时间的方法,并提供相应的代码实例。 方法一:使用System类的currentTimeMillis()方法获取当前时间 System类提供了一个静态的currentTimeMillis()方法,可以获取当前的毫秒数,从而计算出当…

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