`

Executor 框架

阅读更多
说明:本篇文章是在阅读《Java 并发编程艺术》过程中的一些笔记和分析,由于本人能力有限,如果有书写错误的地方,欢迎各位大佬批评指正!我们互相交流,学习,共同进步!

该项目的地址:https://github.com/xiaoheng1/concurrent-programming

1.Executor 框架的两级调度模型

在 HotSpot VM 的线程模型中,Java 线程(java.lang.Thread) 被一一映射为本地操作系统线程. Java 线程启动时会创建一个本地操作系统线程.
当该 Java 线程终止时,这个操作系统线程也会被回收.

Executor 调度任务,创建 java,lang.Thread, 而 java.lang.Thread 被映射为 OS 本地线程,受 OSKernel 调度.

Executor 是一个接口,它是 Executor 框架的基础,它将任务的提交与任务的执行分离开来.

public interface Executor {

    /**
     * Executes the given command at some time in the future.  The command
     * may execute in a new thread, in a pooled thread, or in the calling
     * thread, at the discretion of the {@code Executor} implementation.
     *
     * @param command the runnable task
     * @throws RejectedExecutionException if this task cannot be
     * accepted for execution
     * @throws NullPointerException if command is null
     */
    void execute(Runnable command);
}

ThreadPoolExecutor 是线程池的核心实现类,用来执行被提交的任务.

ScheduledThreadPoolExecutor 是一个实现类,可以在给定的延迟后运行命令,或者定期执行命令.

Future 接口相当于一个占位符,用于异步计算.

ThreadPoolExecutor 通常使用工厂类 Executors 来创建. Executors 可以创建 3 种类型的 ThreadPoolExecutor:
(1)SingleThreadPoolExecutor
(2)FixedThreadPoolExecutor
(3)CachedThreadPool

public static ExecutorService newSingleThreadExecutor() {
    return new FinalizableDelegatedExecutorService
        (new ThreadPoolExecutor(1, 1,
                                0L, TimeUnit.MILLISECONDS,
                                new LinkedBlockingQueue<Runnable>()));
}
   
   
public static ExecutorService newFixedThreadPool(int nThreads) {
    return new ThreadPoolExecutor(nThreads, nThreads,
                                  0L, TimeUnit.MILLISECONDS,
                                  new LinkedBlockingQueue<Runnable>());
}


CachedThreadPool 是大小无界的线程池,适用于执行很多的短期异步任务的小程序,或者负载教轻的服务器.

public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                  60L, TimeUnit.SECONDS,
                                  new SynchronousQueue<Runnable>());
}

2.ScheduledThreadPoolExecutor
ScheduledThreadPoolExecutor 继承自 ThreadPoolExecutor,它主要用来在给定的延迟时间之后运行任务,或者定期执行任务.
ScheduledThreadPoolExecutor 的功能与 Timer 类似,但功能比 Timer 更加强大.

3.FutureTask
0
0
分享到:
评论

相关推荐

    Executor框架使用详解

    Executor框架是Java并发编程的核心组件,它在Java 5中被引入,极大地简化了多线程编程。这个框架是基于`java.util.concurrent`包中的接口和类构建的,旨在提供线程池服务、任务调度以及并发执行任务的能力。Executor...

    Java基础篇:Executor框架.pdf

    该文档详细记录了Executor框架结构、使用示意图、ThreadPoolExecutor使用示例、线程池原理分析、几种常见线程池(FixedThreadPool、SingleThreadExecutor、CachedThreadPool)的详解以及线程池大小确定等内容

    Java并发编程利器:Executor框架深度解析与应用实践

    Java通过引入Executor框架,为并发任务的执行提供了一种高效、灵活的管理机制。本文将深入探讨Executor框架的设计哲学、核心组件,并结合实例演示如何利用这一框架提升程序的性能和响应性。 注意事项和最佳实践 合理...

    掌握并发的钥匙:Java Executor框架深度解析

    # 掌握并发的钥匙:Java Executor框架深度解析 Java作为一种广泛应用的编程语言,自1995年由Sun Microsystems公司(现属Oracle公司)首次发布以来,已经发展成为软件开发领域的重要工具。Java的设计目标包括跨平台...

    线程池之Executor框架.docx

    Java中的Executor框架是多线程编程的一个重要组成部分,它始于JDK5,目的是为了更好地管理和控制线程的执行。Executor框架的设计理念是将任务(工作单元)与执行机制分离,从而提高了程序的可扩展性和灵活性。 1. *...

    Java多线程之Executor框架.docx

    Java的Executor框架是Java 1.5引入的用于管理和控制多线程的一种机制,它旨在解决直接使用`new Thread(…).start()`方法创建线程所带来的问题。在传统的多线程编程中,直接创建和销毁线程会导致大量开销,且无法有效...

    针对于Executor框架,Java API,线程共享数据

    ### 针对Executor框架与线程共享数据的深入探讨 #### 1. Executor框架的重要性与优势 在Java并发编程领域中,Executor框架扮演着一个非常核心的角色。它为开发者提供了一个高效且易于使用的线程池管理方案。下面将...

    Java Executor 框架的实例详解

    Java Executor 框架的实例详解 Java Executor 框架是 Java 中一个很重要的并发编程模型,主要用于并发任务的执行和管理。Executor 框架的实例详解可以帮助开发者更好地理解和使用 Executor 框架,以下是 Java ...

    Java并发Executor框架

    1、Executor框架简介  从JDK5开始,工作单元和执行机制隔离开来,工作单元包括Runnable和Callable,执行机制由Executor提供。  调用关系:Java线程一对一映射到本地操作系统的系统线程,当多线程程序分解若干...

    Java并发之线程池Executor框架的深入理解

    Java并发之线程池Executor框架的深入理解 Java中的线程池Executor框架是Java并发编程中的一种常见机制,用于管理和执行异步任务。通过使用线程池,可以大大减少线程的创建和销毁开销,从而提高系统的性能和稳定性。...

    Executor框架图

    非常好的Java并发框架Executor图例,结构清晰,继承关系清楚。

    Java Executor 框架学习总结

    Java Executor 框架是Java并发编程中一个重要的组件,它是Java 5引入的一个核心工具,用于管理和控制线程的执行。Executor 框架的主要目的是简化多线程编程,提高程序的可维护性和可扩展性。这个框架的核心是 `...

    线程池与Executor框架(处理方案示例).md

    开发中碰到的

    20 其实不用造轮子—Executor框架详解.pdf

    Java并发编程学习宝典(漫画版),Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习宝典(漫画版)Java并发编程学习...

    顶层接口Executors详解

    可以将此种模式分为两层,在上层,Java多线程程序通常把应用程序分解为若干任务,然后使用用户级的调度器(Executor框架)讲这些任务映射为固定数量的线程;在底层,操作系统内核将这些线程映射到硬件处理器上。 3....

    第20章 Part5 并发工具执行器与线程池.pdf

    Java中的Executor框架提供了一种灵活的方式来管理线程池,从而实现任务的并发执行。 首先,线程池的基本思想是通过预先创建一定数量的线程,来执行一系列的任务。在没有线程池的情况下,为每个任务启动一个新线程会...

    深入探索:Java线程池的工作原理与实践

    在现代多线程编程中,Java线程池(Executor框架)扮演着至关重要的角色。它不仅提高了程序的性能,还有效地管理了资源。本文将深入探讨Java线程池的工作原理,并通过实际代码示例,展示如何高效地使用线程池。 ...

    Java中的Runnable接口最全讲义

    4.2 使用Executor框架启动线程池 5. 传递参数给线程: 5.1 使用构造方法传递参数 5.2 使用类成员变量传递参数 6. 线程同步: 6.1 线程安全性概述 6.2 使用同步方法 6.3 使用同步块 6.4 使用Lock和Condition 6.5 使用...

    Java并发编程面试题

    同时,Java也提供了线程池、Executor框架等机制来管理线程的创建和执行。 下面是Java并发编程面试题的详细知识点: 基础知识 * 并发编程的优缺点 * 为什么要使用并发编程 * 并发编程三要素是什么? * 在Java程序...

Global site tag (gtag.js) - Google Analytics