`
- 浏览:
61747 次
- 来自:
...
-
《敏捷软件开发》第12章 AcitveObject模式构建多线程
看了我好久才看懂的代码。
ActiveObjectEngine.java
- package active;
-
-
-
-
-
- import java.util.LinkedList;
-
- public class ActiveObjectEngine {
-
- LinkedList itsCommands = new LinkedList();
-
- public void addCommand(Command c) {
- itsCommands.add(c);
- }
-
- public void run() {
- while (!itsCommands.isEmpty()) {
- Command c = (Command) itsCommands.getFirst();
- itsCommands.removeFirst();
- try {
- c.execute();
- } catch (Exception e) {
- }
- }
- }
- }
Command.java
- package active;
-
-
-
-
-
- public interface Command {
- public void execute() throws Exception;
- }
DelayedTyper.java
- package active;
-
-
-
-
-
- public class DelayedTyper implements Command{
- private long itsDelay;
- private char itsChar;
- private static ActiveObjectEngine engine=new ActiveObjectEngine();
- private static boolean stop=false;
-
- public static void main(String args[]) throws Exception{
- engine.addCommand(new DelayedTyper(100,'1'));
- engine.addCommand(new DelayedTyper(300,'3'));
- engine.addCommand(new DelayedTyper(500,'5'));
- engine.addCommand(new DelayedTyper(700,'7'));
-
- Command stopCommand=new Command(){
- public void execute(){
- stop=true;
- }
- };
-
- engine.addCommand(new SleepCommand(20000,engine,stopCommand));
- engine.run();
- }
-
- public DelayedTyper(long delay,char c){
- itsDelay=delay;
- itsChar=c;
- }
-
- public void execute() throws Exception{
- System.out.print(itsChar);
- if(!stop){
- delayAndRepeat();
- }
- }
-
- public void delayAndRepeat() throws CloneNotSupportedException{
- engine.addCommand(new SleepCommand(itsDelay,engine,this));
- }
- }
SleepCommand.java
- package active;
-
-
-
-
-
- public class SleepCommand implements Command{
- private Command wakeupCommand=null;
- private ActiveObjectEngine engine=null;
- private long sleepTime=0;
- private long startTime=0;
- private boolean started=false;
-
- public SleepCommand(long milliseconds,ActiveObjectEngine e,Command wakeupCommand){
- sleepTime=milliseconds;
- engine=e;
- this.wakeupCommand=wakeupCommand;
- }
-
- public void execute() throws Exception{
- long currentTime=System.currentTimeMillis();
- if(!started){
- started=true;
- startTime=currentTime;
- engine.addCommand(this);
- }else if((currentTime-startTime)
- engine.addCommand(this);
- }else{
- engine.addCommand(wakeupCommand);
- }
- }
- }
SleepCommandTest.java
- package active;
-
- import org.junit.After;
- import org.junit.AfterClass;
- import org.junit.Before;
- import org.junit.BeforeClass;
- import org.junit.Test;
- import static org.junit.Assert.*;
-
-
-
-
-
- public class SleepCommandTest {
-
- public SleepCommandTest() {
- }
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @Before
- public void setUp() throws Exception {
- }
-
- @After
- public void tearDown() throws Exception {
- }
- public boolean commandExecuted=false;
- @Test
- public void execute() throws Exception {
- Command wakeup=new Command(){
- public void execute(){commandExecuted=true;}
- };
-
- ActiveObjectEngine e=new ActiveObjectEngine();
- SleepCommand c=new SleepCommand(1000,e,wakeup);
- e.addCommand(c);
- long start=System.currentTimeMillis();
- e.run();
- long stop=System.currentTimeMillis();
- long sleepTime=(stop-start);
- System.out.println(sleepTime);
- assert(sleepTime>1000);
- assert(sleepTime>1000);
- assert(commandExecuted);
- }
-
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
第12章 多线程程序设计.ppt第12章 多线程程序设计.ppt
Phase Termination——快把玩具收拾好,去睡觉吧 第11章 Thread-Specific Storage——每个线程的保管箱 第12章 Active Object——接受异步消息的主动对象 总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B...
《易语言源码多线程多任务下载软件》是一款基于易语言编程的高效下载工具,其核心特性在于利用多线程技术实现多个文件的同时下载,提高下载效率,满足用户快速批量下载的需求。本文将深入探讨易语言编程环境、多线程...
《C++面向对象多线程编程》共分13章,全面讲解构建多线程架构与增量多线程编程技术。第1章介绍了用于构建面向对象程序的不同类型...第12章简单介绍多线程应用程序的测试技术。第13章对全书内容进行扼要地回顾与思考。
Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...
Java多线程设计模式是Java开发中的核心概念,它涉及到如何高效、安全地在多个执行线程之间共享资源和协调任务。设计模式是解决特定问题的成熟方案,它们是编程经验的结晶,可以帮助开发者在面临多线程挑战时快速找到...
在这个"socket多线程例程非阻塞模式"的示例中,我们将深入探讨如何在Windows平台上实现多线程的socket通信,并了解非阻塞模式的工作原理。 首先,让我们来理解Socket的基本概念。Socket是进程间通信(IPC)的一种...
在Java多线程编程中,设计模式扮演着至关重要的角色,它们不仅提供了处理并发问题的通用解决方案,还帮助程序员构建出更加稳定、高效且可维护的多线程应用程序。以下是对标题“Java 多线程编程中的设计模式”以及...
第12章 Active Object——接受异步消息的主动对象 总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B Java的内存模型 附录C Java线程的优先级 附录D 线程相关的主要API 附录E 参考文献
标题和描述均指向了一个关于Java多线程设计模式的PDF文档的下载链接,这暗示了文档的主要内容将围绕Java中的多线程编程及其设计模式展开。在Java领域,多线程是一个核心概念,它允许程序执行多个任务同时进行,极大...
(此书包含2个部分,大家下载时注意) 全书共分13章,全面讲解构建多线程...第12章简单介绍多线程应用程序的测试技术。第13章对全书内容进行扼要地回顾与思考。 本书适合用C++创建多线程组件和应用框架的程序员阅读。
《Java多线程编程实战指南(设计模式篇)》由黄文海撰写,是一本深入探讨Java多线程编程和设计模式的专业书籍。书中详细介绍了如何在Java环境中利用多线程来实现高效的并发处理,同时结合设计模式,帮助开发者更好地...
在编程领域,多线程是一种常见的技术,它允许程序同时执行多个任务,从而提高系统效率和响应速度。...通过深入理解C#的多线程机制,并利用各种测试工具和方法,开发者可以构建出强大且可靠的多线程应用程序。
Java多线程设计模式是Java开发中的重要领域,它涉及到并发编程、系统性能优化以及程序的稳定性。在Java中,多线程允许程序同时执行多个任务,极大地提升了程序的执行效率。本资源提供了详细的Java多线程设计模式的...
7. 响应式编程模式:虽然更多地与现代Web开发相关,但响应式设计模式也可以在多线程编程中使用,特别是在涉及到事件驱动和消息传递的场景。 由于没有具体的内容可以参考,以上知识点仅是对标题和描述内容的合理推测...
.NET框架的多线程技术是开发高性能应用程序的关键组成部分,特别是在处理并发操作、并行计算以及UI更新时。在.NET 2.0版本中,多线程功能已经得到了充分的优化和增强,允许开发者构建出更加高效的应用程序。下面将...
Delphi,作为一个流行的Object Pascal开发环境,提供了丰富的工具和库来支持多线程编程。本篇文章将深入探讨Delphi中的多线程技术,包括其原理、实现方式以及在实际开发中的应用。 一、多线程概念 多线程是指在一个...
总的来说,"易语言-多线程开发框架 1.1.1版本"提供了一个易语言环境下的多线程编程解决方案,通过学习和利用这个框架,开发者可以更高效地开发出能够充分利用多核处理器能力的软件,同时应对复杂的数据处理和并发...