`
- 浏览:
62227 次
- 来自:
...
-
《敏捷软件开发》第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)的一种...
"嵌入式Linux应用程序开发第9章多线程编程" 本章主要讲解了 Linux 中的多线程编程,包括 Linux 线程的基本概念、创建及使用、属性设置、同步与互斥问题的处理等内容。通过学习本章,读者将掌握 Linux 中线程的基本...
总的来说,"易语言-多线程开发框架 1.1.1版本"提供了一个易语言环境下的多线程编程解决方案,通过学习和利用这个框架,开发者可以更高效地开发出能够充分利用多核处理器能力的软件,同时应对复杂的数据处理和并发...
第12章 Active Object——接受异步消息的主动对象 总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B Java的内存模型 附录C Java线程的优先级 附录D 线程相关的主要API 附录E 参考文献
标题和描述均指向了一个关于Java多线程设计模式的PDF文档的下载链接,这暗示了文档的主要内容将围绕Java中的多线程编程及其设计模式展开。在Java领域,多线程是一个核心概念,它允许程序执行多个任务同时进行,极大...
ActiveObject模式是一种用于管理并发执行的方法,它通过封装线程或线程池的使用来简化多线程编程。在这种模式下,对象的接口不是直接...开发者可以利用ActiveObject模式来构建出高效、稳定且易于维护的多线程应用程序。
(此书包含2个部分,大家下载时注意) 全书共分13章,全面讲解构建多线程...第12章简单介绍多线程应用程序的测试技术。第13章对全书内容进行扼要地回顾与思考。 本书适合用C++创建多线程组件和应用框架的程序员阅读。
ActiveObject模式是一种在多线程环境中提高并发性能的设计模式。这种模式通过封装线程池和同步机制,使得客户端能够以同步的方式调用异步操作,从而避免了线程之间的直接交互和资源竞争。ActiveObject模式通常包括...
《Java多线程编程实战指南(设计模式篇)》由黄文海撰写,是一本深入探讨Java多线程编程和设计模式的专业书籍。书中详细介绍了如何在Java环境中利用多线程来实现高效的并发处理,同时结合设计模式,帮助开发者更好地...
在编程领域,多线程是一种常见的技术,它允许程序同时执行多个任务,从而提高系统效率和响应速度。...通过深入理解C#的多线程机制,并利用各种测试工具和方法,开发者可以构建出强大且可靠的多线程应用程序。
Java多线程设计模式是Java开发中的重要领域,它涉及到并发编程、系统性能优化以及程序的稳定性。在Java中,多线程允许程序同时执行多个任务,极大地提升了程序的执行效率。本资源提供了详细的Java多线程设计模式的...
7. 响应式编程模式:虽然更多地与现代Web开发相关,但响应式设计模式也可以在多线程编程中使用,特别是在涉及到事件驱动和消息传递的场景。 由于没有具体的内容可以参考,以上知识点仅是对标题和描述内容的合理推测...