BBS水木清华站∶精华区
发信人: kasper (回来了), 信区: Java
标 题: Re: java.lang.OutOfMemoryError?
发信站: BBS 水木清华站 (Wed Jan 17 14:01:11 2001)
udp的服务器用这种方法是可以的,但是TCP持久连接的服务器用Threadpool也没用的,
因为每个socket都是阻塞的,必须有一个线程对应一个socket,同时有1000个用户连接,
就得有1000个thread。
当然这个前提是用blocking socket,前面我说的non-blocking的socket可以用来解决
这个问题。
tomcat里用threadpool,主要是因为thread创建开销大,http是短时连接的协议,所以
用threadpool可以去掉每次连接都创建thread的开销。
【 在 vago (无中生有) 的大作中提到: 】
∶ 这才是正确的Solution.
∶ 事实上不可能有绝对的“同时”存在,都是相对于一定的时间单位而言
∶ 在一般的jvm的级别为微秒级。
∶ 在这个级别的处理层次下,对于2000个频繁在使用的用户,大约需要
∶ 50-200个thread同时存在就够了(假设时间离散度为1m-3m),你为
∶ 每一个用户分配一个thread在这种级别下是极大的浪费。
∶ pool的机制就是专门为这种开销昂贵,但可回收循环利用的资源而提出的。
∶ 实现起来不是很复杂,connectionpool我就编过一个
∶ threadpool象No1提到的可以看一下tomcat的源代码,高兴自己编一个也没什么问题。
--
你我,不过是尘埃。
[25C
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.136.252]
BBS水木清华站∶精华区