`

cindy源码阅读(6)future

阅读更多
future的本质就是事情交给别人来做,不管别人有没有做完,马上返回。

其实用到future的地方还是挺少的,就是session的开始 结束 和发送数据。
session的开始 结束其实对socket的处理,剩下的事情就交给ractor了,发送数据也是添加到一个sendquene,剩下的事情也是交给别人做了。


可以看到cindy的future类似jdk的future,但是多了个getSession的功能。

那为什么需要getSession的功能呢。因为future会有一些FutureListener,当future处于不同状态的时候触发FutureListener,而FutureListener的具体实现其实还是对session的操作。

可以看到future的实现类只有一个:DefaultFuture。所以分析起来还是比较容易的。

主要的字段是
  private volatile Queue listeners; // lazy load

    private volatile boolean completed = false;
    private volatile boolean succeeded = false;


先说listeners,很明显可以添加删除listener,但是什么时候触发listener呢?是在setSucceeded方法中,会执行。
 private void futureCompleted(FutureListener listener) {
                try {
                    listener.futureCompleted(DefaultFuture.this);
                } catch (Throwable e) {
                    caughtException(e);
                }
            }

其实看到FutureListener接口只有futureCompleted这一个方法。

然后是completed 和succeeded 字段。setSucceeded的时候会设置completed 为true,也会设置succeeded 为对应值。
 public synchronized void setSucceeded(boolean succeeded) {
        if (completed)
            throw new IllegalStateException(
                    "can't change the state of a completed future");
        completed = true;
        this.succeeded = succeeded;

        notifyAll();

        dispatchFutureCompleted(null);
    }


然后构造方法也是可以设置这两个字段的。

 
public DefaultFuture(Session session, boolean succeeded) {
        this.session = session;
        completed = true;
        this.succeeded = succeeded;
    }

DefaultFuture的构造方法的形式一般用于直接返回:Session 的startFuture, closeFuture有用到。抛出异常的时候也也一般是这样。


用到future的主要地方:



  • 大小: 16.6 KB
  • 大小: 20 KB
0
0
分享到:
评论

相关推荐

    开源nio框架cindy源码

    6. **异步I/O操作**:Cindy的核心是异步I/O,这包括异步读写操作。理解如何利用Java NIO的异步特性来处理I/O请求,以及如何回调用户定义的处理函数,是深入理解Cindy的重要环节。 7. **源码结构分析**: - `...

    cindy最新源码和库

    6. **教育应用**:Cindy的设计初衷是为了教育目的,因此源码中可能包含了许多示例和教程,帮助初学者快速上手。 通过研究这个压缩包中的源码,开发者不仅可以学习到计算机图形学的基本概念,还可以了解到如何将这些...

    cindy.jar 源码工具包

    cindy.jar 源码工具包

    基于java的开发源码-异步IO框架 Cindy.zip

    基于java的开发源码-异步IO框架 Cindy.zip 基于java的开发源码-异步IO框架 Cindy.zip 基于java的开发源码-异步IO框架 Cindy.zip 基于java的开发源码-异步IO框架 Cindy.zip 基于java的开发源码-异步IO框架 Cindy.zip ...

    异步IO框架 Cindy源码

    6. **线程模型(Thread Model)**:Cindy可能会采用单线程、多线程或者工作窃取模型等不同的线程模型来实现事件循环。 7. **配置和扩展性(Configuration & Extensibility)**:Cindy应提供丰富的配置选项,以便...

    JAVA源码异步IO框架CindyJAVA源码异步IO框架Cindy

    JAVA源码异步IO框架CindyJAVA源码异步IO框架Cindy

    基于Java的实例源码-异步IO框架 Cindy.zip

    5. **Cindy源码分析**:通过阅读和分析Cindy的源码,我们可以深入理解其内部工作原理,包括事件循环的实现、回调机制的调度以及如何优雅地处理并发问题。这对于提升Java并发编程和系统优化的能力非常有价值。 6. **...

    java源码:异步IO框架 Cindy.rar

    与传统的同步I/O模式不同,异步I/O不会在等待数据读写完成时阻塞线程,而是通过回调或者Future机制通知用户数据已经准备好。这种方式极大地提高了并发处理能力,特别适用于高并发的网络服务,如Web服务器、数据库...

    异步IO框架 Cindy

    在源码层面,Cindy可能采用了面向对象的设计模式,通过类和接口来封装各种IO操作和事件处理。同时,为了保持代码的可读性和可维护性,Cindy可能会遵循一定的设计原则,如单一职责原则、开闭原则等,并使用模块化设计...

    Cindy 3.0b1 的源码--- Mina的兄弟

    Netty、Mina、Cindy都是不错的NIO开源框架,后两者都是在Netty的基础上演化出来的。所以要学习好Java的异步通信框架,这三个都是不可多得的好材料。 本资源仅供学习和参考使用,若要进行开发,请下载相应的Jar包

    小程序 异步IO框架 Cindy(源码).rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    Cindy components v6.53 for All Delphi

    Packages with 71 components for all delphi versions (since D7) to build Windows 32/64 bit applications: VCL controls (labels, buttons, panels, Edits, TabControls, StaticText) with features like ...

    Cindy components for all Delphi versions

    Packages with 76 components for all delphi versions (since D7) to build Windows 32/64 bit applications: VCL controls (labels, buttons, panels, Edits, TabControls, StaticText) with features like ...

    Cindy components for all Delphi versions 6.60

    delphi 控件,优秀的界面设计工具 TcyBevel: multi colored bevels. - TcyPanel: runtime resize feature, multi colored bevels, gradient and shadow feature. - TcyAdvPanel: like TcyPanel plus wallpaper ...

    Cindy components for all delphi versions v3.23 Full Source

    《Cindy组件:全Delphi版本v3.23完整源码详解》 Cindy组件是为Delphi开发者提供的一套强大且美观的界面控件库,特别适用于那些追求个性化和高质量用户界面的项目。在"V3.23 Full Source"版本中,开发者将获得完整的...

    基于Java的异步IO框架 Cindy.zip

    ### 6. 异步编程的最佳实践 - **避免过度异步**:不是所有操作都适合异步处理,过多的异步调用可能导致回调地狱,增加调试难度。 - **错误处理**:确保正确处理异常,避免在回调中忽视错误。 - **性能监控**:定期...

    基于java的异步IO框架 Cindy.zip

    下面我们将深入探讨Java异步IO的基本概念、Cindy框架的特点以及如何使用Cindy进行实际开发。 首先,理解Java中的异步I/O。在Java标准库中,NIO(New IO)提供了一种异步I/O操作的机制。传统的Java IO基于阻塞I/O...

    Netty 3.0.2.GA 的源码--- Mina的兄弟

    Netty、Mina、Cindy都是不错的NIO开源框架,后两者都是在Netty的基础上演化出来的。所以要学习好Java的异步通信框架,这三个都是不可多得的好材料。 本资源仅供学习和参考使用,若要进行开发,请下载相应的Jar包。

    Cindy components v4.43 + Demo.zip

    6. 动画和效果组件(Animation and Effects Components):提供动态效果和动画,可以增加应用程序的视觉吸引力,提高用户体验。 7. 验证和安全组件(Validation and Security Components):用于密码输入、数据验证...

    基于C#开发的桌面宠物程序源码+可执行程序+项目说明.zip

    运用了Cindy723/PyRPA: 基于Pyautogui的自动化工具 的脚本 unity和win混合 【使用方法】 Releases里下载双击运行Mion_pet.exe即可; 【备注】 主要针对计算机相关专业的正在做毕设的学生和需要项目实战的C#学习者。 ...

Global site tag (gtag.js) - Google Analytics