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水木清华站∶精华区