代码改变世界

Thread Demo

2016-09-14 01:47  cnblogs_qm  阅读(404)  评论(0编辑  收藏  举报

实现类

 1 import org.springframework.core.task.TaskExecutor;
 2 
 3 public class DemoBOImpl 
 4 {
 5     // 线程池
 6     @Resource(name = "taskExecutor")
 7     private TaskExecutor taskExecutor;
 8 
 9     @Override
10     public void executeThread() throws Exception {
11         // 线程池控制
12         taskExecutor.execute(new DemoThread());
13     }
14 }

 

线程类

 1 public class DemoThread implements Runnable 
 2 {
 3     public DemoThread() {
 4     }
 5 
 6     @Override
 7     public void run() {
 8         try {
 9             // do things
10         } catch (Exception e) {
11         }
12     }
13 }

 

Spring配置

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xmlns:aop="http://www.springframework.org/schema/aop"
 6     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee"
 7     xsi:schemaLocation=" http://www.springframework.org/schema/beans
 8     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 9     http://www.springframework.org/schema/aop
10     http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
11     http://www.springframework.org/schema/tx
12     http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
13     http://www.springframework.org/schema/context
14       http://www.springframework.org/schema/context/spring-context-2.5.xsd
15     http://www.springframework.org/schema/jee
16     http://www.springframework.org/schema/jee/spring-jee-2.5.xsd">
17     
18     <context:annotation-config />
19     
20     <!-- Spring线程池配置开始 -->
21     <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">  
22         <!-- 核心线程数,默认为1 -->  
23         <property name="corePoolSize" value="1" />  
24         <!-- 最大线程数,默认为Integer.MAX_VALUE -->  
25         <property name="maxPoolSize" value="1" />  
26            <!-- 队列最大长度,默认为Integer.MAX_VALUE -->  
27            <property name="queueCapacity" value="1" />  
28         <!-- 线程池维护线程所允许的空闲时间,默认为60s -->  
29         <property name="keepAliveSeconds" value="60" />  
30         <!-- 线程池对拒绝任务(无线程可用)的处理策略,目前只支持AbortPolicy、CallerRunsPolicy;默认为后者 -->  
31         <property name="rejectedExecutionHandler">  
32         <!-- AbortPolicy:直接抛出java.util.concurrent.RejectedExecutionException异常 -->  
33         <!-- CallerRunsPolicy:主线程直接执行该任务,执行完之后尝试添加下一个任务到线程池中,可以有效降低向线程池内添加任务的速度 -->  
34         <!-- DiscardOldestPolicy:抛弃旧的任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->  
35           <!-- DiscardPolicy:抛弃当前任务、暂不支持;会导致被丢弃的任务无法再次被执行 -->  
36         <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />  
37         </property>  
38     </bean>
39     <!-- Spring线程池配置结束 -->
40 </beans>