java 创建线程的四种方式

当需要创建多个任务并行执行时,我们可以通过创建线程来实现。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~关于md5签名引发的问题

    事实是这样的,我有个接口,这个接口不能被篡改,于是想到了比较简单的md5对url地址参数进行加密,把这个密码当成是sign,然后服务端收到请求后,使用相同算法也生成sign,两个sign相同就正常没有被篡改过。 问题的出现 接口中的参数包括userId,extUserId,时间,其中extUserId字符编码,中间会有+这种符号 有些用户使用签名接口正常 有…

    Java 2023年4月23日
    00
  • Java 注解学习笔记

    下面我来为您详细讲解“Java 注解学习笔记”的完整攻略。 什么是Java注解? Java注解(Annotation),也叫元数据(metadata),为我们在代码中添加信息提供了一种形式化的方法,使我们可以在运行时和编译时进行代码分析。它可以用于向编译器、虚拟机和其他工具提供元数据。 Java注解使用@注解名的方式表达,例如@Override是Java内置…

    Java 2023年5月26日
    00
  • 10种提升android运行效率的建议

    10种提升Android运行效率的建议 Android是一个功能齐全的操作系统,但由于各种原因,它可能会变慢或运行不流畅。下面是10种提升Android运行效率的建议: 卸载不必要的应用程序 卸载不常用的应用程序可以释放存储空间和系统资源。如果您有很多不必要或重复的应用程序,可以通过卸载它们来提高性能。 例如,如果您有多个音乐播放器应用程序,但只使用其中一个…

    Java 2023年5月26日
    00
  • Java 实现协程的方法

    Java 实现协程的方法有很多种,下面会介绍其中两种方式。 一、基于协程库的实现方式 使用协程库实现协程是一种比较常见的方式,常用的协程库有Quasar、Kotlin协程等。这里以Quasar为例来讲解。 Quasar Quasar是一个基于ASM技术的协程库,Quasar可以在Java和Kotlin上实现协程。Quasar提供了协程的核心API和一些常用场…

    Java 2023年5月18日
    00
  • 图解linux安装tomcat(附常用命令)

    图解Linux安装Tomcat(附常用命令) 在Linux安装Tomcat可能会遇到一些问题,本文将为你详细讲解Linux安装Tomcat的过程,同时也会介绍一些常用命令。 准备工作 在开始安装Tomcat之前,我们需要做一些准备工作。 1. 安装Java Tomcat运行在Java环境下,因此在安装Tomcat之前,需要先安装Java。下面是安装Java的…

    Java 2023年5月19日
    00
  • Spring Boot 2.0多数据源配置方法实例详解

    Spring Boot 2.0多数据源配置方法实例详解 基础知识 在进行本文的阅读前,读者需要掌握以下知识: Spring Boot 2.0框架基础 数据源的概念和用法 Spring Boot在多数据源方面的优势和实现方式 实现过程 在多数据源的配置中,我们需要主要的是多个数据源的定义和配置。接下来,我们将给出两条实例来帮助读者更好的理解多数据源的配置。 步…

    Java 2023年5月20日
    00
  • JSP的response对象的实例详解

    JSP的response对象的实例详解 在JSP中,response对象代表服务器向客户端发送响应。它是JSP内置对象之一,可以用来设置HTTP响应的相关信息,如响应头、响应状态码、输出内容等。在本篇攻略中,我们将详细讲解如何使用response对象,包括以下内容: 设置响应头 设置响应状态码 输出HTML内容 文件下载 设置响应头 使用response对象…

    Java 2023年6月15日
    00
  • 详解IDEA创建Tomcat8源码工程流程

    下面是详解IDEA创建Tomcat8源码工程流程的完整攻略。 1. 下载并导入Tomcat8源码 首先,需要前往Tomcat官网下载Tomcat8源码,并解压到本地。然后,在IntelliJ IDEA中选择“File” > “New” > “Project from Existing Sources”打开源码文件夹,依次点击“Next”,在询问是…

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