java 创建线程的四种方式

yizhihongxing

当需要创建多个任务并行执行时,我们可以通过创建线程来实现。Java中创建线程有四种方式,分别是继承Thread类、实现Runnable接口、实现Callable接口并使用FutureTask包装器把Callable装载成一个线程、使用Executor框架创建线程池。下面依次介绍这四种方式:

继承Thread

我们可以继承Thread类并重写run()方法实现多线程,具体实现代码如下:

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println("Thread is running...");
    }

    public static void main(String[] args) {
        MyThread thread = new MyThread();
        thread.start();//启动线程
    }
}

实现Runnable接口

实现Runnable接口并重写run()方法同样可以创建线程,具体实现代码如下:

public class MyThread implements Runnable {
    @Override
    public void run() {
        System.out.println("Thread is running...");
    }

    public static void main(String[] args) {
        MyThread thread = new MyThread();
        Thread t = new Thread(thread);
        t.start();//启动线程
    }
}

实现Callable接口并使用FutureTask包装器

Callable接口提供了一种可以返回结果并抛出异常的线程方法,我们可以使用FutureTask类来装载Callable并创建线程,具体实现代码如下:

public class MyThread implements Callable<String> {
    @Override
    public String call() throws Exception {
        return "Thread is running...";
    }

    public static void main(String[] args) throws Exception {
        MyThread thread = new MyThread();
        FutureTask<String> task = new FutureTask<>(thread);
        Thread t = new Thread(task);
        t.start();
        System.out.println(task.get());
    }
}

使用Executor框架创建线程池

Executor框架是Java线程池的核心,在java.util.concurrent包中提供了各种线程池的实现方法。我们可以使用Executor框架来创建线程池并提交任务,示例代码如下:

public class MyThread implements Runnable {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+" is executing task...");
    }

    public static void main(String[] args) {
        ExecutorService executor = Executors.newFixedThreadPool(5);//创建线程池
        for(int i=0;i<10;i++){
            MyThread thread = new MyThread();//创建任务
            executor.execute(thread);//提交任务
        }
        executor.shutdown();//关闭线程池
    }
}

以上就是Java创建线程的四种方式的详细讲解。无论哪一种方式,都可以完成多线程并发任务的执行。在使用时,需要根据不同情况和需求选择恰当的方式。

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

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

相关文章

  • 基于springBoot配置文件properties和yml中数组的写法

    以下是基于springBoot配置文件properties和yml中数组的写法的完整攻略: 配置文件格式 在Spring Boot中,可以使用.properties或.yml格式的配置文件,其中.yml格式相较于.properties更为简洁直观。 .properties格式 .properties格式中数组的写法可以使用以下方式: my.array[0]=…

    Java 2023年5月23日
    00
  • Java日常练习题,每天进步一点点(8)

    这里是对“Java日常练习题,每天进步一点点(8)”的完整攻略。 标题 在你的网站上,为了让用户更好地了解到你的文章,你需要给你的文章添加标题。在本文中,我们可以使用如下的标题: # Java日常练习题,每天进步一点点(8)攻略 描述 接下来,我们需要对这篇文章进行一些描述。我们需要告诉用户这篇文章将会介绍什么内容。 本文将会介绍《Java日常练习题,每天进…

    Java 2023年5月26日
    00
  • Java基础MAC系统下IDEA连接MYSQL数据库JDBC过程

    下面是详细讲解Java基础MAC系统下IDEA连接MYSQL数据库JDBC过程的完整攻略: 1. 准备工作 在开始连接MySQL数据库之前,需要准备以下工作:- 安装JDK:在MAC系统下使用IntelliJ IDEA开发Java程序,需要先安装JDK;- 下载MySQL Connector/J:使用Java连接MySQL数据库需要使用MySQL提供的JDB…

    Java 2023年6月16日
    00
  • 微软官方SqlHelper类 数据库辅助操作类 原创

    微软官方的SqlHelper类是一个非常好用的数据库辅助操作类,旨在简化与SQL Server数据库交互的代码和流程。下面我将详细讲解如何使用这个类来进行数据库操作。 SqlHelper类的介绍 SqlHelper类是基于ADO.NET的数据库辅助操作类,使用SqlHelper类可以更加容易地执行SQL语句,无需考虑参数、连接、事务等繁琐的细节。SqlHel…

    Java 2023年5月19日
    00
  • Java swing 图像处理多种效果实现教程

    Java Swing是Java编程语言专为创建GUI(图形用户界面)设计的一种界面工具包。在Java Swing中,可以使用其图像处理功能实现许多效果。下面是“Java Swing图像处理多种效果实现教程”的完整攻略。 1. 导入Java Swing库 在Java项目文件中,需要导入Java Swing库以便使用其图像处理功能。可以在代码中写入以下代码: i…

    Java 2023年5月26日
    00
  • 利用Java连接Hadoop进行编程

    利用Java连接Hadoop进行编程的完整攻略 准备工作 安装开发和运行Hadoop所需的Java环境。推荐使用Java 1.8版本。 下载并解压Hadoop软件包。 配置Hadoop环境变量。 写一个Java程序来连接Hadoop 下面是一个简单的Java程序,它能够连接到Hadoop集群,读取一个文件,并输出每行的内容。该程序主要使用Hadoop的Map…

    Java 2023年5月19日
    00
  • JAVA 内部类详解及实例

    JAVA 内部类详解及实例 Java内部类可以看作是一种定义在另一个类内部的类。它们有访问外部类的所有成员的权限。Java内部类可以分为四种:成员内部类、局部内部类、匿名内部类和静态内部类。 成员内部类 成员内部类定义在外部类的内部,并且不是static类型的。成员内部类可以直接访问外部类的成员变量和方法,并且可以通过this关键字访问自己的成员变量和方法。…

    Java 2023年5月26日
    00
  • Java将字符串写入文本文件代码示例

    下面是关于 Java 将字符串写入文本文件的完整攻略,过程中将会给出两条代码示例: 1. 创建一个文件对象 要想将字符串写入文件,我们首先需要创建一个文件对象,可以通过 java.io.File 类来实现。该类有多个构造函数,其中两个较为常用的构造方法如下: File(String pathname) File(String parent, String c…

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