tomcat提供的线程池

来源:互联网 发布:网络专科可以自考本科 编辑:程序博客网 时间:2024/05/16 10:01
一直以为发布服务的时候,要自己写多线程调用的,比如来一个客户调用,就启动一个线程。但是这个时候就出现了一个问题,发布的服务如果改写成调用线程的程序,那么run方法是不能有返回值和抛出异常的,那发布的服务还有什么意思呢,没有返回值的服务吗?哈哈

    查看了资料,才知道原来各个web容器比如tomcat,Resion和Jetty都是有自己的线程池的,只要在配置文件里配置下,那么客户端调用的时候,容器会自动给分配线程池里面的线程,提高访问的速度。

这里先写一些如何在tomcat中配置线程池调用吧:

配置很简单 ,打开%TOMCAT_HOME%/conf/server.xml:
第一步,打开共享的线程池

源码
<Service name="Catalina"> 
  <!--The connectors can use a shared executor, you can define one or more named thread pools-->  
  
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"   
    maxThreads="1000" minSpareThreads="50" maxIdleTime="600000"/> 

默认前后是注释<!-- -->掉的,去掉就可以了。其中

name
The name used to reference this pool in other places in server.xml. The name is required and must be unique.
这个是线程池的名字,必须唯一,我们在后面的配置里要用到这个东西

namePrefix
(String) The name prefix for each thread created by the executor. The thread name for an individual thread will be namePrefix+threadNumber
线程的名字前缀,用来标记线程名字的,这样每个线程就用这个前缀加上线程编号了,比如
catalina-exec-1
catalina-exec-2

maxThreads
(int) The max number of active threads in this pool, default is 200
允许的最大线程池里的线程数量,默认是200,大的并发应该设置的高一些,反正只是限制而已,不占用资源

minSpareThreads
(int) The minimum number of threads always kept alive, default is 25
最小的保持活跃的线程数量,默认是25.这个要根据负载情况自行调整了。太小了就影响反应速度,太大了白白占用资源。

maxIdleTime
(int) The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less or equal to minSpareThreads. Default value is 60000(1 minute)
超过最小活跃线程数量的线程,如果空闲时间超过这个设置后,会被关别。默认是1分钟。

threadPriority
(int) The thread priority for threads in the executor, the default is Thread.NORM_PRIORITY
线程的等级。默认是Thread.NORM_PRIORITY

第二步
在 Connector里指定使用共享线程池

<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443"   connectionTimeout="20000"   executor="tomcatThreadPool"  acceptCount="100"  useBodyEncodingForURI="true"  enableLookups="false" /> 
原创粉丝点击