精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Java>>临时目录>>Re:不如大家来谈谈线城池

主题:Re:不如大家来谈谈线城池
发信人: chanix(Chanix)
整理人: zjxyz(2003-12-05 13:09:23), 站内信件
【 在 zjxyz 的大作中提到:】
:【 在 zhcharles 的大作中提到:】
:我自己的经验是,100~200线程的代理服务其速度方便绝对比单线程快,我也上过1000,不过这时机器的内存消耗得好厉害了~~
:
:1000个,如果是Win下的话,还好,要是在Linux下,死定,因为Linux是用进程实现Java的线程的。。
:......

看看我的架构?呵呵 http://www.chanix.net/chariot/index.html

用线程的优势并不是用来处理 Socket,直接用 nio 方式比用线程来的有效率。但是在具体进行一些应用服务器的设计开发时,降低开发难度,提高维护和可靠是第一位的。使用线程池可以预装载一些资源,对资源的管理和控制比较有效,而且一个线程一个处理流程,对系统的操纵性会强些,这是我的切身体会。同时用NIO的方式提高了系统的开发难度,这对大系统而言意味着系统的可靠性和稳定性依靠人的能力,而且维护难度增加,我个人不大喜欢这种方式。

线程序池我感觉很通用啊,其实多线程和 C 中的 prefock 方式很象,apache、avalon 里面不都用的嘛,为什么会说不通用?我看主要是没有一个通用的架构,每次用的时候都要重新写和调试比较讨厌。所以我写了个 Chariot ,提供通用的服务器多线程管理架构。在国外一些别的网站上也有处理其他情况的多线程模型和类似 Chariot 的架构存在。GOOGLE 一下就有很多啦:)

www.chanix.net 全部的服务都基于线程池,由底层的 Chariot 来进行管理和控制。从稳定性来看是可以满足一般需要的。单从Socket的角度来说,NIO的效率更好些,但是不便于进行系统的控制,提高了开发难度,所以我没有使用。

这就好象UNIX中 prefork 和 select,没有哪个绝对好,而是在某种情况下,哪个更适合。

另外,从系统的运行角度来看,在UNIX类系统下使用线程的效果比 WIN 下使用要明显,因为大部分 UNIX类 系统中的JVM是用进程来模拟线程的(Solaris 好象支持线程,但是和JDK的版本有关)。使用线程池预先生成了一部分进程,在运行时避免了一部分系统上下文切换和复制,所以效果会明显些。




----
把网站搬回家,用自己的机器做互联网服务器,建立您可以完全操控的网上家园。

Chanix 小组成员

[关闭][返回]