public interface Executor{
void execute(Runnable cmd);
}
如此简单的接口,却为一个灵活而强大的框架创造了基础。使得线程的执行逻辑和时序逻辑得到了分离,提高了健壮性和可扩张性,使得需求变化时不再是将整个程序重写而只需修改相应的执行逻辑
Executor解藕了任务的执行策略和任务的执行过程: 只要提交给Executor一个Runnable,Exector根据自身的执行策略(如使用线程池,定时执行,或单线程等等),去调用runnable的run方法。Executor只是指定执行的策略,只知道Runnable有个run方法,不需要知道run what;而 Runnable只需要知道自己到底做什么,不需要知道到底按什么顺序做,什么时刻做。
这里面有两个变化点:“做什么” 和 ”怎么做“的变化
。当系统有多个变化点时,我们一般的做法是对每个变化点分别进行封装
。这样使得每个对象(类)只需要管理一种变化。一个变化了,不会影响到其他的变化点,保证了可扩展性。
Executor实际上就是一个Command模式。命令模式使用很常见,GUI的Swing中菜单命令,JDBC的Query命令对象等等(这里不说Command模式了,想写的时候在写吧)。
类库中提供了几个Executor的实现(主要用于线程池),通过调用Executors的某个静态方法来创建:
newFixedThreadPool 创建一个顶长的线程池。
newCacheThreadPoo; 创建一个可缓存的线程池。如果当前线程池的长度超过了处理的需要,就回收空闲线程;当需求增加是,灵活增加新的线程。
newSingleThreadExecutor 创建一个单线程的executor
newScheduleThreadPool 创建一个定长的线程池,支持定时的以及周期性的执行(替代Timer)
Executor Vs Thread
当看到如下的代码:
new Thread(runnable).start()
并且可能最终希望获得一个更加灵活的执行策略是,考虑使用Executor代替Thread
ExecutorService继承了Executor,提供了对生命周期管理。
public interface ExecutorService exetends Executor {
void shutdown(();
List<Runnable> shutdownNow();
boolean isShutdown();
boolean istermindated();
boolean awaitTermination(long timeout, TimeUnit unit)
throw InterruptedException;
//....其他用于任务提交的便利方法
}
分享到:
相关推荐
《Java设计模式实战详解》 在Java编程领域,设计模式是一种通用、可重用的解决方案,用于解决在软件设计中常见的问题。这个压缩包“java-design-patterns-master”显然是一个专注于Java设计模式的学习资源,旨在...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java编程中,命令模式的应用广泛且实用。 命令模式的核心是将...
Java设计模式是面向对象编程领域中的重要概念,它是一套被广泛接受并应用于解决常见问题的解决方案模板。这些模式在不同的上下文中已经被证明是有效的,它们可以帮助开发者在编写可维护、可扩展和可复用的代码时遵循...
Java设计模式中的命令模式是一种行为设计模式,它将请求封装为一个对象,使得可以在不同的时间、不同的地方对请求进行参数化、队列化、记录请求日志、支持撤销操作等。这种模式的主要目的是将调用者与实现者解耦,...
本资料包“DesignPattern.zip”包含了Java、C++和Golang三种编程语言的设计模式实现,这对于想要深入理解这些语言的开发者来说是非常宝贵的资源。 1. **设计模式分类**: 设计模式通常分为三类:创建型、结构型和...
这个模拟策略游戏可能采用了MVC(Model-View-Controller)或其他设计模式,如Observer或Command模式,来组织代码结构。 3. **游戏逻辑**:策略游戏的核心在于其规则和算法。开发者需要设计一套规则系统,包括游戏...
### Java常用的设计模式详解 #### 一、工厂模式(Factory) **定义:** 工厂模式是一种创建型设计模式,提供了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。 **应用场景...
Java设计模式是软件工程中的一种最佳实践,它们是解决常见编程问题的经验总结,旨在提高代码的可重用性、可维护性和灵活性。本主题将深入探讨24种主要的设计模式,以及它们在Java中的另类解读。 首先,设计模式分为...
标题:Java设计模式 描述:本教程由developerWorks提供,旨在为Java程序员提供关于设计模式的深入理解,帮助他们提升面向对象设计与开发技能。通过本教程的学习,读者将掌握设计模式的基本概念、分类以及在知名目录...
Java企业设计模式是一种在开发大型、复杂的企业级应用时,为了解决常见问题和提高代码复用性而形成的一系列经过验证的编程实践。这些模式是经验丰富的开发者们在面对特定设计挑战时所采取的最佳解决方案的总结。在这...
Java作为广泛应用的面向对象编程语言,其强大的灵活性使得设计模式的实现更为便捷。本资源包含全部23种经典设计模式的Java实现,涵盖了Proxy(代理模式)、Singleton(单例模式)、Interpreter(解释器模式)以及...
在Java企业级开发中,设计模式尤其重要,因为这些系统往往需要处理大量的并发用户、复杂的业务逻辑以及与数据库、网络服务等多方面的交互。本书涵盖的模式主要分为三大类:创建型模式、结构型模式和行为型模式。 1....
在软件开发领域,设计模式是经过时间和实践验证的解决方案模板,用于解决常见编程问题。"命令模式"是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列请求、或者支持可撤销的操作。在这个...
所以很少存在简单重复的工作,加上Java 代码的精炼性和面向对象纯洁性(设计模式是 java 的灵魂),编程工作将变成一个让你时刻 体验创造快感的激动人心的过程. 为能和大家能共同探讨"设计模式",我将自己在学习中的心得...
命令模式是一种设计模式,它将请求封装为一个对象,使得我们可以使用不同的请求、队列请求、或者支持可撤销的操作。在Java中,命令模式被广泛应用于各种场景,尤其是在需要解耦调用者与具体实现之间关系的时候。接...
Java的事件模式是编程中的一种设计模式,尤其在构建响应用户输入或系统状态改变的应用时至关重要。事件模式在Java中通常分为两类:直接驱动模式和监控式事件模式。 1. **事件直接驱动模式** 在这种模式下,事件...
**Java设计模式之命令模式详解** 命令模式是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列或者日志请求,也可以支持可撤销的操作。在Java编程中,命令模式广泛应用于解耦请求的发送者...
命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java编程中,命令模式的应用广泛且实用,尤其在需要解耦发送者...
在这样的系统中,设计模式的应用通常涉及到如何处理复杂的业务逻辑、数据持久化、并发控制等问题,这些都是Java设计模式可以大展拳脚的领域。 总之,Java设计模式是软件开发中的宝贵财富,理解和掌握它们能够提升...
EJB(Enterprise JavaBeans)设计模式是解决在Java EE平台中使用EJB组件遇到的问题和挑战的一种策略。这些模式旨在优化系统性能、可扩展性、可维护性,以及提高组件的重用性。在大型、复杂的项目中,尤其在团队协作...