从图中可以看出来,接口Executor是框架知识点的引路者,那就从它讲起!
一:关于Executor的源码
/* * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * Written by Doug Lea with assistance from members of JCP JSR-166 * Expert Group and released to the public domain, as explained at * http://creativecommons.org/publicdomain/zero/1.0/ */ package java.util.concurrent; /** * An object that executes submitted {@link Runnable} tasks. This * interface provides a way of decoupling task submission from the * mechanics of how each task will be run, including details of thread * use, scheduling, etc. An <tt>Executor</tt> is normally used * instead of explicitly creating threads. For example, rather than * invoking <tt>new Thread(new(RunnableTask())).start()</tt> for each * of a set of tasks, you might use: * * @since 1.5 * @author Doug Lea */ 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 <tt>Executor</tt> 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); }
说明:看源码,简单的不得了,就一个execute方法,参数为Runnable类型的对象!学过线程的都应该知道,Thread类就是Runnable的实现类,那execute方法可以传Thread对象。
在这列举一下Runnable的实现类:
- AsyncBoxView.ChildState 用于Java Swing开发
- FutureTask 用于异步计算
- RenderableImageProducer 用于AWT开发图像异步生成
- SwingWorker 用于Java Swing开发
- Thread 用于Java线程开发
- TimerTask 用于计时器任务
其中标红的是需要重点学习的!
二:Executor的几种实现形式
在Executor的源码中,列举了几种实现方式:
1) 执行程序可以在调用者的线程中立即运行已提交的任务
class DirectExecutor implements Executor { public void execute(Runnable r) { r.run(); } }
2) 执行程序将为每个任务生成一个新线程去运行
class ThreadPerTaskExecutor implements Executor { public void execute(Runnable r) { new Thread(r).start(); } }
3) 执行程序使任务提交与第二个执行程序保持连续,这说明了一个复合执行程序。
class SerialExecutor implements Executor { final Queue<Runnable> tasks = new ArrayDeque<Runnable>(); final Executor executor; Runnable active; SerialExecutor(Executor executor) { this.executor = executor; } public synchronized void execute(final Runnable r) { tasks.offer(new Runnable() { //放入队列 public void run() { try { r.run(); } finally { scheduleNext(); } } }); if (active == null) { scheduleNext(); } } protected synchronized void scheduleNext() { if ((active = tasks.poll()) != null) { executor.execute(active); } } }
参考资料:
JDK API 1.6.0
http://www.iteye.com/topic/366591
相关推荐
实时计算框架Spark是一种高效的大规模数据处理工具,其核心特性在于内存计算,使得数据处理速度比传统的MapReduce有了显著提升。Spark通过DAG(有向无环图)执行引擎优化了计算流程,支持多种计算模式,包括批处理、...
001 - Spark框架 - 简介.avi 002 - Spark框架 - Vs Hadoop.avi 003 - Spark框架 - 核心模块 - 介绍.avi 005 - Spark框架 - ...020 - Spark框架 - 核心概念 - Executor & Core & 并行度.avi 023 - SparkCore - 分布式
接着,书中将深入探讨Java并发工具类,如Executor框架、Semaphore信号量、CyclicBarrier和CountDownLatch等,这些工具在实际项目中有着广泛的应用,学习它们能帮助开发者更好地控制和协调并发任务。 此外,书中的...
《Spark入门(完整版)》是一本全面介绍Apache Spark技术的指南,旨在帮助初学者快速掌握这个大数据处理领域的核心工具。Spark作为一个强大的分布式计算框架,因其高效、易用和多模态处理能力,在大数据和机器学习...
MyBatis是一个强大的Java持久层...总之,MyBatis是一个强大且灵活的持久层框架,通过"Mabatis快速入门(一)"的学习,你可以快速上手并应用到实际项目中。记得在实践中不断探索和学习,提升你的开发效率和代码质量。
在"SpringMVC+MyBatis开发从入门到实践源码"这个项目中,你将会找到各个章节的代码示例,这些示例涵盖了从基本的配置到复杂的业务场景。例如,如何设置SpringMVC的DispatcherServlet,如何编写Controller,如何配置...
Spark是Apache软件基金会下的一个开源大数据处理框架,以其高效、灵活和易用的特性在大数据领域备受推崇。本文将基于“Spark学习总结-入门.rar”这份资料,对Spark的基础知识进行详细阐述,帮助读者深入理解Spark的...
实验一:MyBatis入门案例 实验目标是掌握MyBatis环境的搭建和基本程序的编写。MyBatis的工作原理主要包括以下步骤: 1. **配置文件读取**:首先,MyBatis会读取核心配置文件`mybatis-config.xml`,这个文件定义了...
这个"spring web flow入门demo"是一个理想的学习资源,适合初学者掌握该框架的基本概念和用法。 Spring Web Flow 提供了一种声明式的方式来定义用户界面的导航流程,允许开发者明确地指定用户在应用程序中的行为...
iBatis是一个开源的Java库,它为数据库访问提供了一个灵活的框架,使得开发者能够将SQL语句直接集成到应用程序中,避免了传统的数据访问层(DAL)中的大量模板代码。iBatis并非一个完整的ORM(对象关系映射)框架,...
**iBatis入门(三)** 在本篇中,我们将深入探讨iBatis,这是一个流行的开源持久层框架,它允许开发者将SQL语句与Java代码分离,提供更灵活的数据库操作方式。iBatis的核心是SQL Maps,这些映射文件包含了SQL语句以及...
- **线程池**:Executor框架允许创建和管理线程池,提高系统资源利用率。 5. **网络编程** - **Socket编程**:Java提供了Socket和ServerSocket类进行TCP/IP通信。 - **HTTP客户端与服务器**:使用...
6. **Executor 执行器**:Ibatis 内部有一个执行器(Executor),负责执行 SQL 语句,根据不同的事务控制策略,它可以是 SimpleExecutor、ReuseExecutor 或 BatchExecutor。 7. **ParameterHandler**:这个接口处理...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责SQL映射,使得...通过学习这个Ibatis入门教程,你可以了解并掌握如何在Java应用中使用Ibatis进行数据操作,为后续的进阶学习和项目开发打下坚实的基础。
【标题】"ibatis-sqlMap-入门教程(代码)" 涉及的知识点主要集中在使用MyBatis(原iBATIS)框架进行数据库操作的初步实践上。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎...
在这个"MyBatis的jar包以及入门学习程序.zip"压缩文件中,包含了MyBatis的核心库mybatis-3.5.2.zip,这是MyBatis框架的最新版本。这个版本的MyBatis提供了许多增强的功能,包括对Java 8的支持,改进的SQL构建器,...
- **Executor**:执行器,内部处理 SQL 执行,有基本执行器和缓存执行器。 - **Mapped Statement**:封装了 SQL 语句、输入参数类型、输出结果类型等信息。 ### 3. MyBatis 入门程序 在 MyBatis 入门程序中,通常...
MyBatis是一款强大的Java持久层框架,它实现了SQL与Java代码的解耦,极大地提高了开发效率。本资源包是专为初学者至进阶者设计的一套完整的MyBatis学习资料,旨在帮助开发者全面理解并掌握MyBatis的核心概念和技术。...