线程池的记录

依赖:

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.1.2.RELEASE</version>
		</dependency>

配置文件,放到容器中:

	<bean id="threadPoolTaskExecutor"
		    class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
			<!-- 线程池维护线程的最少数量 -->
          <property name="corePoolSize" value="5" />
          <!-- 允许的空闲时间 -->
          <property name="keepAliveSeconds" value="100" />
          <!-- 线程池维护线程的最大数量 -->
          <property name="maxPoolSize" value="10" />
          <!-- 缓存队列 -->
          <property name="queueCapacity" value="20" />
          <!-- 线程超过空闲时间限制,均会退出直到线程数量为0 -->
        <property name="allowCoreThreadTimeOut" value="false"/>
           <!-- 对拒绝task的处理策略 -->
          <property name="rejectedExecutionHandler">
              <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />
          </property>
  </bean>

属性字段说明

1.corePoolSize:线程池维护线程的最少数量,默认为1

2.keepAliveSeconds:允许的空闲时间,默认为60s

3.maxPoolSize:线程池维护线程的最大数量,默认为Integer.MAX_VALUE

4.queueCapacity:缓存队列,队列最大长度,一般需要设置值>=notifyScheduledMainExecutor.maxNum;默认为Integer.MAX_VALUE

5.rejectedExecutionHandler:对拒绝task的处理策略

6.allowCoreThreadTimeOut:当线程池中的线程数量大于corePoolSize时,如果某线程空闲时间超过keepAliveTime,线程将被终止,如果allowCoreThreadTimeOut为false,则线程数量维持在corePoolSize, 如果为true,则线程数量可最低降至0;

<!--线程池对拒绝任务(无线程可用)的处理策略,目前只支持AbortPolicy、CallerRunsPolicy;默认为后者 -->
			       	<property name="rejectedExecutionHandler">
			            <!-- AbortPolicy:直接抛出java.util.concurrent.RejectedExecutionException异常 -->
			            <!-- CallerRunsPolicy:主线程直接执行该任务,执行完之后尝试添加下一个任务到线程池中,
			            可以有效降低向线程池内添加任	务的速度 -->
			            <!-- DiscardOldestPolicy:抛弃旧的任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->
			            <!-- DiscardPolicy:抛弃当前任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->
			            <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />
			        </property>

使用时,直接注入

import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@Autowired
	private  ThreadPoolTaskExecutor threadPoolTaskExecutor;

直使用:

threadPoolTaskExecutor.execute(new Runnable() {
				@Override
				public void run() {
					//线程代码
				}});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值