一文搞懂Java创建线程的五种方法

下面我将为您详细讲解创建Java线程的五种方法。

1. 继承Thread类

创建线程的第一种方式是继承Thread类。需要定义一个类来继承Thread,并覆写Thread的run方法,在其中编写线程要执行的任务。

public class MyThread extends Thread {
    public void run() {
        // 线程要执行的代码
    }
}

创建线程并启动:

MyThread myThread = new MyThread();
myThread.start();

2. 实现Runnable接口

创建线程的第二种方式是实现Runnable接口。与第一种方法相比,实现接口更加灵活,因为Java不支持多重继承,继承Thread就无法继承其他类,而实现Runnable接口则没有这个问题。

public class MyRunnable implements Runnable {
    public void run() {
        // 线程要执行的代码
    }
}

创建线程并启动:

MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();

3. 实现Callable接口

创建线程的第三种方式是实现Callable接口。Callable接口可返回线程的执行结果,并能够抛出异常。与实现Runnable接口相比,Callable更加强大。

public class MyCallable implements Callable<String> {
    public String call() throws Exception {
        // 线程要执行的代码
        return "result";
    }
}

创建线程并启动:

MyCallable myCallable = new MyCallable();
FutureTask<String> task = new FutureTask<>(myCallable);
Thread thread = new Thread(task);
thread.start();

4. 使用线程池创建线程

创建线程的第四种方式是使用线程池。Java提供了线程池来管理线程,可以重复利用线程,避免了线程的频繁创建与销毁。

// 创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(10);

// 提交任务给线程池执行
executorService.execute(new Runnable() {
    @Override
    public void run() {
        // 线程要执行的代码
    }
});

// 关闭线程池
executorService.shutdown();

5. 使用匿名内部类

创建线程的第五种方式是使用匿名内部类。可以直接创建一个实现Runnable接口或继承Thread类的匿名内部类来创建线程。

new Thread(new Runnable() {
    public void run() {
        // 线程要执行的代码
    }
}).start();

以上就是Java创建线程的五种方法。下面介绍两个例子:

示例1

public class MyThread extends Thread {
    private String name;

    public MyThread(String name) {
        this.name = name;
    }

    public void run() {
        System.out.println("Thread " + name + " is running.");
    }
}

public class Main {
    public static void main(String[] args) {
        MyThread t1 = new MyThread("A");
        MyThread t2 = new MyThread("B");
        t1.start();
        t2.start();
    }
}

以上示例中,MyThread继承了Thread类,重写了run方法,在run方法中需要输出线程名字。在main方法中,创建两个MyThread对象,分别传入不同的线程名字,然后开启线程。

示例2

public class MyRunnable implements Runnable {
    private String name;

    public MyRunnable(String name) {
        this.name = name;
    }

    public void run() {
        System.out.println("Thread " + name + " is running.");
    }
}

public class Main {
    public static void main(String[] args) {
        MyRunnable r1 = new MyRunnable("A");
        MyRunnable r2 = new MyRunnable("B");
        Thread t1 = new Thread(r1);
        Thread t2 = new Thread(r2);
        t1.start();
        t2.start();
    }
}

以上示例中,MyRunnable实现了Runnable接口,重写了run方法,在run方法中需要输出线程名字。在main方法中,创建两个MyRunnable对象,分别传入不同的线程名字,然后创建两个Thread对象,并将MyRunnable对象作为参数传递给Thread构造函数。最后开启线程。

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

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

相关文章

  • java多线程:基础详解

    Java多线程:基础详解攻略 什么是线程? 在计算机科学中,线程是指一个进程内部的单个执行流程。一个进程可以拥有多个线程,各个线程共享该进程的内存空间和系统资源,但每个线程拥有自己的程序计数器(PC)、栈和局部变量等。因此,多线程可以使程序在并发情况下更高效地运行。 如何创建线程? Java提供了两种方式来创建线程: 1.继承Thread类 在Java中,我…

    多线程 2023年5月17日
    00
  • 浅析Disruptor高性能线程消息传递并发框架

    浅析Disruptor高性能线程消息传递并发框架 Disruptor是一个高性能线程消息传递并发框架,它的操作主要是在内存中进行,最早由LMAX Exchange公司开源,并且在金融领域得到广泛应用。Disruptor与传统的生产者/消费者模式相比,最大的优势在于它可以避免锁竞争、缓存不命中等问题,从而获得更高的性能。 Disruptor的核心概念 Ring…

    多线程 2023年5月16日
    00
  • python中threading和queue库实现多线程编程

    当我们在编写 Python 程序时需要执行一些耗时的任务时,为了防止程序在这些任务等待完成时被挂起,我们会选择采用多线程来执行这些任务。Python 提供的 threading 和 queue 库可以很容易地实现多线程编程。下面就给出关于这两个库的详细讲解。 线程和多线程 线程是指进程中的一个运行单元,每个进程可以有多个线程。线程与进程的差异在于线程是同一进…

    多线程 2023年5月17日
    00
  • MySQL系列之十 MySQL事务隔离实现并发控制

    MySQL事务隔离实现并发控制是MySQL数据库中非常重要的一个功能,它能够实现对并发事务的隔离,避免出现并发访问数据库时的数据一致性问题。本文将为读者介绍MySQL事务隔离的基本概念、实现方式及其使用方法。 MySQL事务隔离的基本概念 MySQL事务隔离是指通过数据库隔离等级(Isolation Level)来实现多个并发事务间互不影响的机制。在MySQ…

    多线程 2023年5月16日
    00
  • Ruby3多线程并行Ractor使用方法详解

    Ruby3多线程并行Ractor使用方法详解 什么是Ractor Ractor是Ruby3新增的一个轻量级的并行方案。它通过在多线程环境下使用独立的内存空间来避免锁竞争,大大提高了并行执行的效率和稳定性。 Ractor中的每个Actor都是一个独立的线程,运行时拥有自己独立的内存空间。不同的Actor之间可以通过消息传递的方式进行通信,从而实现并行计算。 如…

    多线程 2023年5月17日
    00
  • python实现多线程的方式及多条命令并发执行

    首先,Python可以通过多线程编程技术实现多条命令的并发执行,从而提高程序的执行效率。本文将为大家详细讲解Python实现多线程的方式及多条命令并发执行的攻略。 实现多线程的方式 Python实现多线程可以通过以下两种方式: 使用threading模块创建线程。 继承Thread类并重写run()方法实现线程。 本文以第一种方式为例进行讲解。 使用thre…

    多线程 2023年5月16日
    00
  • C++基于reactor的服务器百万并发实现与讲解

    C++基于Reactor的服务器百万并发实现与讲解 简介 该攻略将介绍基于Reactor模式实现高并发服务器的过程。Reactor模式是一种常见的多路复用I/O技术,用于实现高并发环境下的网络服务器。Reactor模式基于IO多路复用,通过事件驱动的方式,将网络I/O事件分发给对应的处理函数,从而实现高效的I/O操作。 本攻略将着重介绍基于C++实现Reac…

    多线程 2023年5月17日
    00
  • 深入SQLite多线程的使用总结详解

    下面为您详细讲解“深入SQLite多线程的使用总结详解”的完整攻略。 概述 在高并发场景下,为了提升数据访问效率,多线程访问数据库已经成为了必要的需求。而SQLite作为轻量级的嵌入式数据库,因其灵活的使用方式和可靠的性能表现,成为了许多应用的首选。本文将深入探讨SQLite多线程的使用方法和技巧,同时提供实战性的示例代码供读者参考。 SQLite多线程的使…

    多线程 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部