1、.net4.0,32位机器最大线程数,每核1023个
2、.net4.0,64位机器最大线程数,每核32768个
3、.net3.0,最大线程数,每核250个
4、.net2.0,最大线程数,每核25个
默认的最小线程数是每核1个。在服务器端环境,比如iis下的asp.net最小线程数会更大可能超过50。
线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。
组成部分:
服务器程序利用线程技术响应客户请求已经司空见惯,可能您认为这样做效率已经很高,但您有没有想过优化一下使用线程的方法。该文章将向您介绍服务器程序如何利用线程池来优化性能并提供一个简单的线程池实现。
1、线程池管理器(ThreadPoolManager):用于创建并管理线程池。
2、工作线程(WorkThread):线程池中线程。
3、任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。
4、任务队列:用于存放没有处理的任务。提供一种缓冲机制。
简单的理解为用户端与服务器端仅仅只有一座桥梁,数据传送只能靠这一座桥梁来完成。我们可以把这个桥梁当作是线程。线程数的多少会影响到下载速度的多少
但是不一定是开到最大就是最好的
要根据服务端和用户端的具体情况而定
1。java的线程开启,默认的虚拟机会分配1M的内存,但是在4G的windows上线程最多也就开到300多 ,是因为windows本身的一些限制导致。2。虚拟机给每个线程分配的内存(栈空间)是由虚拟机参数-Xss来指定的,在不同平台上对应的默认大小可以 在oracle的官方文档上查询到:
http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman /optionX.html
其中,Linux64位默认Xss值为256K,并非1M或10M
3。一个Java进程可以启动的线程数可以通过如下公式计算:
(系统剩余内存 - 最大堆容量Xmx - 最大方法区容量MaxPermSize)/ 最大栈空间Xss
这样,4G的服务器单个进程可以开多少线程,可以粗略计算出来,大概是5000个线程。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)