Java 并发编程学习(三):Executor和ExecutorService

线程池基本机制

线程池是一种池化资源,其主要解决重复创建线程带来的额外开销。线程池的设计使用了生产者-消费者模型。向线程池中提交一个计算任务,执行提交动作的线程是生产者,线程池中的线程作为消费者来执行具体的计算。

Executor和ExecutorService

Java中Executor是线程池的顶层抽象接口,其提供了一个最基本的方法定义:执行任务。

ExecutorService拓展了Executor接口,提供了管理线程池、批量执行任务的接口。

使用线程池

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


public class Main {

    public static void main(String[] args) {
        // 使用静态方法创建一个线程数为固定大小的线程池
        ExecutorService pool = Executors.newFixedThreadPool(1);

        // 定义一个任务
        Runnable task = () -> {
            System.out.println("[" + Thread.currentThread().getName() + "] is execute task");
        };

        // 因为ExecutorService拓展了Executor接口因此可以调用execute方法来执行计算任务
        pool.execute(task);

        // 使用完线程池之后要主动关闭线程池,销毁线程。
        pool.shutdown();

        System.out.println("[" + Thread.currentThread().getName() + "] exit");
    }
}

执行结果:

posted @ 2021-02-02 19:47  陈玉林  阅读(96)  评论(0编辑  收藏  举报