教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

在Java中Executor和Executors的区别?

更新时间:2023年07月25日09时49分 来源:传智教育 浏览次数:

好口碑IT培训

  在Java中,Executor和Executors都与线程池相关,但它们有一些区别。

  1.Executor接口

  Executor是Java提供的一个简单接口,它定义了一个用于执行任务的方法execute(Runnable command)。它只有一个方法,因此使用时需要手动管理线程池的创建和配置。

  2.Executors类

  Executors是Java提供的工具类,用于创建和管理线程池。它提供了一些静态方法来创建不同类型的线程池,简化了线程池的创建和配置过程。

  演示:下面将演示如何使用Executor和Executors来创建并执行一个简单的任务。

  首先,我们使用Executor手动创建一个线程池并执行任务:

import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

public class ExecutorExample {
    public static void main(String[] args) {
        // 使用Executor创建一个固定大小为2的线程池
        Executor executor = Executors.newFixedThreadPool(2);

        // 创建并执行任务
        executor.execute(() -> {
            System.out.println("Task 1 is running on thread: " + Thread.currentThread().getName());
        });

        executor.execute(() -> {
            System.out.println("Task 2 is running on thread: " + Thread.currentThread().getName());
        });

        // 关闭线程池
        ((ExecutorService) executor).shutdown();
    }
}

  接下来,我们使用Executors类来创建一个固定大小为2的线程池并执行任务:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ExecutorsExample {
    public static void main(String[] args) {
        // 使用Executors创建一个固定大小为2的线程池
        ExecutorService executorService = Executors.newFixedThreadPool(2);

        // 创建并执行任务
        executorService.execute(() -> {
            System.out.println("Task 1 is running on thread: " + Thread.currentThread().getName());
        });

        executorService.execute(() -> {
            System.out.println("Task 2 is running on thread: " + Thread.currentThread().getName());
        });

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

  这两个示例效果是一样的,但是使用Executors类更为简洁,它隐藏了底层线程池的创建和管理细节,使代码更易读和维护。

0 分享到:
和我们在线交谈!