日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springboot 初始化线程池_springboot项目中线程池的使用

發布時間:2024/9/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot 初始化线程池_springboot项目中线程池的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在application.properties添加線程池配置項

spring.task.scheduling.thread-name-prefix=SysAsyncExecutor_

spring.task.scheduling.pool.size=10

spring.task.execution.thread-name-prefix=SysAsyncExecutor_

spring.task.execution.pool.core-size=6

spring.task.execution.pool.max-size=200

spring.task.execution.pool.queue-capacity=10

spring.task.execution.pool.keep-alive=60

spring.task.execution.pool.allow-core-thread-timeout=true

公共線程池配置類

@Slf4j

@Configuration

@EnableAsync

public class ThreadAsyncConfigurer implements AsyncConfigurer {

@Value("${spring.task.execution.thread-name-prefix:thread_name_prefix_}")

private String threadNamePrefix;

@Value("${spring.task.scheduling.pool.size:10}")

private int corePoolSize;

@Value("${spring.task.execution.pool.max-size:100}")

private int maxPoolSize;

@Value("${spring.task.execution.pool.queue-capacity:10}")

private int queueCapacity;

@Value("${spring.task.execution.pool.keep-alive:60}")

private int keepAliveSeconds;

private int awaitTerminationMillis = 60;

private boolean waitForJobsToCompleteOnShutdown = Boolean.TRUE;

@Bean("taskExecutor")

public ThreadPoolTaskExecutor taskExecutor() {

ThreadPoolTaskExecutor threadPool = new ThreadPoolTaskExecutor();

//設置核心線程數

threadPool.setCorePoolSize(corePoolSize);

//設置最大線程數

threadPool.setMaxPoolSize(maxPoolSize);

//線程池所使用的緩沖隊列

threadPool.setQueueCapacity(queueCapacity);

//等待任務在關機時完成--表明等待所有線程執行完

threadPool.setWaitForTasksToCompleteOnShutdown(waitForJobsToCompleteOnShutdown);

//等待時間 (默認為0,此時立即停止),并沒等待xx秒后強制停止

threadPool.setAwaitTerminationSeconds(awaitTerminationMillis);

//線程空閑后的最大存活時間

threadPool.setKeepAliveSeconds(keepAliveSeconds);

//線程名稱前綴

threadPool.setThreadNamePrefix(threadNamePrefix);

//rejection-policy:當pool已經達到max size的時候,如何處理新任務

//CALLER_RUNS:不在新線程中執行任務,而是有調用者所在的線程來執行

threadPool.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());

threadPool.setThreadNamePrefix(threadNamePrefix);// 線程名稱前綴

//初始化線程

threadPool.initialize();

return threadPool;

}

@Override

public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {

//return new SimpleAsyncUncaughtExceptionHandler();

return new AsyncExceptionHandler();

}

/**

* 自定義異常處理類

*

* @author liunh

*/

class AsyncExceptionHandler implements AsyncUncaughtExceptionHandler {

@Override

public void handleUncaughtException(Throwable throwable, Method method, Object... obj) {

log.info("SysAsyncExecutor Exception message - {}", throwable.getMessage());

log.info("SysAsyncExecutor Exception Method name - {}", method.getName());

for (Object param : obj) {

log.info("SysAsyncExecutor Exception Parameter value - " + param);

}

}

}

}

使用

@Slf4j

@SpringBootTest(classes = SpringbootConcurrentDemoApplication.class,

webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)

public class AsyncTaskServiceTest {

@Resource(name = "taskExecutor")

private ThreadPoolTaskExecutor executor;

@Test

public void asyncExecutorTask() {

Listfutures = new ArrayList<>();

ListuserList = new ArrayList<>(Arrays.asList(

"123@qq.com",

"456@qq.com"

));

for (String email : userList) {

Future> future = executor.submit(() -> {

new SendEmailThread(email);

});

futures.add(future);

}

log.info(">>>>>>>>>>>>>>>>end");

}

class SendEmailThread implements Callable{

private String to;

public SendEmailThread(String to) {

this.to = to;

}

@Override

public String call() throws Exception {

log.info(">>>>>>>>>>>>>>>>發送郵件,接收郵箱:{}", to);

return "接收郵箱:" + to;

}

}

}

文章來源: www.oschina.net,作者:Lion華,版權歸原作者所有,如需轉載,請聯系作者。

原文鏈接:https://my.oschina.net/lion1220/blog/3221674

總結

以上是生活随笔為你收集整理的springboot 初始化线程池_springboot项目中线程池的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。