源码研读-mina多线程模型

本文将探讨Mina服务启动时的Acceptor机制,它在后台运行,负责监听并处理用户连接请求。通过对源码的研读,揭示了Mina如何实现高效的多线程模型。
摘要由CSDN通过智能技术生成
         mina是目前很流行的一个网络应用框架,用以帮助用户构建高性能和高伸缩性的网络应用。称其为网络应用框架,主要是其极强的扩展性,支持包括http,ssh,ftp等在内的多种应用层协议。而它本身封装了底层的TCP, UDP等通信协议,使用也非常方便。本文的重点是分析源码,了解它的多线程模型。源码版本为apache-mina-2.0.7。
为了有助于理解,先简单介绍一下mina的整体架构。如下图所示,其分为三层。在通信层之上,是IOService,提供IO服务,管理连接信息,它包含两个实现,一个是IOAcceptor,位于服务器,一个是IOConnector,处在客户端。在IOService之上,是IOFilterChain,作为一个容器,包含一系列IOFilter,做一些通用的数据处理,像协议的转换,多线程,日志等。最上层是IOHandler,负责执行用户的业务逻辑。




(来源http://mina.apache.org/mina-project/userguide/ch2-basics/application-architecture.html)

       下面将按照服务器启动,连接监听,IO处理的顺序来对mina的多线程框架展开分析。
    protected final Set<SocketAddress> bindInternal(List<? extends SocketAddress> localAddresses) throws Exception {
        ....
        // cr eates the Acceptor instance and has the local
        // executor kick it off.
        startupAcceptor();
        .....
    }


    private void startupAcceptor() throws InterruptedException {
        ......


        // start the acceptor if not already started
        Acceptor acceptor = acceptorRef.get();


        if (acceptor == null) {
            lock.acquire();
            acceptor = new Acceptor();


            if (acceptorRef.compareAndSet(null, acceptor)) {
                ex
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值