国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語(yǔ)言|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - Spring線程池ThreadPoolTaskExecutor配置詳情

Spring線程池ThreadPoolTaskExecutor配置詳情

2021-04-09 11:03低調(diào)的小黑 JAVA教程

本篇文章主要介紹了Spring線程池ThreadPoolTaskExecutor配置詳情,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

本文介紹了Spring線程池ThreadPoolTaskExecutor配置,分享給大家,具體如下:

1. ThreadPoolTaskExecutor配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- spring thread pool executor -->  
 <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
  <!-- 線程池維護(hù)線程的最少數(shù)量 -->
  <property name="corePoolSize" value="5" />
  <!-- 允許的空閑時(shí)間 -->
  <property name="keepAliveSeconds" value="200" />
  <!-- 線程池維護(hù)線程的最大數(shù)量 -->
  <property name="maxPoolSize" value="10" />
  <!-- 緩存隊(duì)列 -->
  <property name="queueCapacity" value="20" />
  <!-- 對(duì)拒絕task的處理策略 -->
  <property name="rejectedExecutionHandler">
   <bean class="java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy" />
  </property>
 </bean>

屬性字段說(shuō)明

corePoolSize:線程池維護(hù)線程的最少數(shù)量

keepAliveSeconds:允許的空閑時(shí)間

maxPoolSize:線程池維護(hù)線程的最大數(shù)量

queueCapacity:緩存隊(duì)列

rejectedExecutionHandler:對(duì)拒絕task的處理策略

2. execute(Runable)方法執(zhí)行過(guò)程

如果此時(shí)線程池中的數(shù)量小于corePoolSize,即使線程池中的線程都處于空閑狀態(tài),也要?jiǎng)?chuàng)建新的線程來(lái)處理被添加的任務(wù)。

如果此時(shí)線程池中的數(shù)量等于 corePoolSize,但是緩沖隊(duì)列 workQueue未滿,那么任務(wù)被放入緩沖隊(duì)列。

如果此時(shí)線程池中的數(shù)量大于corePoolSize,緩沖隊(duì)列workQueue滿,并且線程池中的數(shù)量小于maxPoolSize,建新的線程來(lái)處理被添加的任務(wù)。

如果此時(shí)線程池中的數(shù)量大于corePoolSize,緩沖隊(duì)列workQueue滿,并且線程池中的數(shù)量等于maxPoolSize,那么通過(guò)handler所指定的策略來(lái)處理此任務(wù)。也就是:處理任務(wù)的優(yōu)先級(jí)為:核心線程corePoolSize、任務(wù)隊(duì)列workQueue、最大線程 maximumPoolSize,如果三者都滿了,使用handler處理被拒絕的任務(wù)。

當(dāng)線程池中的線程數(shù)量大于corePoolSize時(shí),如果某線程空閑時(shí)間超過(guò)keepAliveTime,線程將被終止。這樣,線程池可以動(dòng)態(tài)的調(diào)整池中的線程數(shù)。

3. 示例代碼

Junit Test

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { MultiThreadConfig.class })
public class MultiThreadTest {
 
 @Autowired
 private ThreadPoolTaskExecutor taskExecutor;
 
 @Autowired
 private MultiThreadProcessService multiThreadProcessService;
 
 @Test
 public void test() {
  int n = 20;
  for (int i = 0; i < n; i++) {
   taskExecutor.execute(new MultiThreadDemo(multiThreadProcessService));
   System.out.println("int i is " + i + ", now threadpool active threads totalnum is " + taskExecutor.getActiveCount());
  }
  
  try {
   System.in.read();
  } catch (IOException e) {
   throw new RuntimeException(e);
  }
 }
}

MultiThreadDemo

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * 多線程并發(fā)處理demo
 * @author daniel.zhao
 *
 */
public class MultiThreadDemo implements Runnable {
 private MultiThreadProcessService multiThreadProcessService;
 public MultiThreadDemo() {
 }
 
 public MultiThreadDemo(MultiThreadProcessService multiThreadProcessService) {
  this.multiThreadProcessService = multiThreadProcessService;
 }
 
 @Override
 public void run() {
  multiThreadProcessService.processSomething();
 }
}

MultiThreadProcessService

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Service
public class MultiThreadProcessService {
 public static final Logger logger = Logger.getLogger(MultiThreadProcessService.class);
 
 /**
  * 默認(rèn)處理流程耗時(shí)1000ms
  */
 public void processSomething() {
  logger.debug("MultiThreadProcessService-processSomething" + Thread.currentThread() + "......start");
  try {
   Thread.sleep(1000);
  } catch (InterruptedException e) {
   throw new RuntimeException(e);
  }
  logger.debug("MultiThreadProcessService-processSomething" + Thread.currentThread() + "......end");
 }
}

MultiThreadConfig

?
1
2
3
4
5
6
@Configuration
@ComponentScan(basePackages = { "com.xxx.multithread" })
@ImportResource(value = { "classpath:config/application-task.xml" })
@EnableScheduling
public class MultiThreadConfig {
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://www.cnblogs.com/redcool/p/6426173.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 久久se精品一区精品二区 | 在线观看av大片 | 九九九九精品九九九九 | 偷拍做爰吃奶视频免费看 | 亚洲视频在线观看免费 | 午夜免费剧场 | 99成人 | 91精品欧美久久久久久动漫 | 日日夜夜精品 | 国产九九九 | 激情欧美一区二区三区中文字幕 | 亚洲一区二区三区在线播放 | 亚洲 中文 欧美 日韩 在线观看 | 精品无码久久久久久国产 | 久久66| 亚洲精品成人av | 久久中文字幕一区 | 欧美精品在线一区二区三区 | 欧美中文字幕在线 | 亚洲视频在线播放 | 波多野结衣先锋影音 | 欧美在线免费观看 | 天堂av中文在线 | 欧美高清免费 | 亚洲欧洲久久 | 看亚洲a级一级毛片 | 黄色一级大片免费看 | 日韩欧美高清视频 | 黄色日本视频 | 香蕉久久一区二区不卡无毒影院 | 黄色片在线播放 | 伊人av成人 | 精品国产欧美 | 亚洲人成网站999久久久综合 | 成人精品免费视频 | 九九热九九 | 欧美日韩视频在线观看免费 | 欧美在线一区二区三区 | 黄色天堂 | 99re热精品视频 | 亚洲国产精品一区 |