spring中使用線程池



bean 配置


applicationContext.xml

<bean id="threadPoolTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
		<!-- 核心線程數,默認爲1 -->
		<property name="corePoolSize" value="10" />
		<!-- 最大線程數,默認爲Integer.MAX_VALUE -->
		<property name="maxPoolSize" value="50" />
		<!-- 隊列最大長度,一般需要設置值>=notifyScheduledMainExecutor.maxNum;默認爲Integer.MAX_VALUE 
			<property name="queueCapacity" value="1000" /> -->
		<!-- 線程池維護線程所允許的空閒時間,默認爲60s -->
		<property name="keepAliveSeconds" value="300" />
		<!-- 線程池對拒絕任務(無線程可用)的處理策略,目前只支持AbortPolicy、CallerRunsPolicy;默認爲後者 -->
		<property name="rejectedExecutionHandler">
		<!-- AbortPolicy:直接拋出java.util.concurrent.RejectedExecutionException異常 -->
		<!-- CallerRunsPolicy:主線程直接執行該任務,執行完之後嘗試添加下一個任務到線程池中,可以有效降低向線程池內添加任務的速度 -->
		<!-- DiscardOldestPolicy:拋棄舊的任務、暫不支持;會導致被丟棄的任務無法再次被執行 -->
		<!-- DiscardPolicy:拋棄當前任務、暫不支持;會導致被丟棄的任務無法再次被執行 -->
		<bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />
		</property>
	</bean>




maven配置jar包

pom.xml 


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



如何調用:

 @Autowired
 private ThreadPoolTaskExecutor threadPoolTaskExecutor;
public void method(){
threadPoolTaskExecutor.execute(new Runnable() {
				
				@Override
				public void run() {
						//具體實現
					}

				});

}



發佈了37 篇原創文章 · 獲贊 12 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章