本篇內容主要講解“JDK線程池和Spring線程池的使用實例介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JDK線程池和Spring線程池的使用實例介紹”吧!
成都創(chuàng)新互聯(lián)專注于企業(yè)營銷型網站建設、網站重做改版、臨夏網站定制設計、自適應品牌網站建設、H5高端網站建設、成都做商城網站、集團公司官網建設、成都外貿網站制作、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為臨夏等各大城市提供網站開發(fā)制作服務。JDK線程池和Spring線程池實例,異步調用,可以直接使用
(1)JDK線程池的使用,此處采用單例的方式提供,見示例:
public class ThreadPoolUtil {private static int corePoolSize = 5;private static int maximumPoolSize = 10;private static long keepAliveTime = 60L;private static TimeUnit unit = TimeUnit.SECONDS;private static int capacity = 1024;private static ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("jdk-thread-pool-%d").build();private static final ExecutorService executorService = new ThreadPoolExecutor(corePoolSize,maximumPoolSize,keepAliveTime,unit,new LinkedBlockingQueue<>(capacity),namedThreadFactory,new ThreadPoolExecutor.AbortPolicy());private ThreadPoolUtil () {}public static ExecutorService getExecutorService () {return executorService;}}
在其它地方可以直接這樣使用:
ThreadPoolUtil.getExecutorService().execute(() -> {System.out.println("test1");System.out.println("test2");})
(2)Spring線程池的使用,此處通過配置類的方式配置線程池的相關屬性,見示例:
@Configuration@EnableAsyncpublic class DocataThreadBeanConfig {private int corePoolSize = 5;private int maxPoolSize = 10;private int queueCapacity = 1024;private String namePrefix = "async-service-task-";// 上述屬性可以通過@Value來讀取配置值@Bean(name = "asyncServiceTaskExecutor")public TaskExecutor asyncServiceExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();// 設置核心線程數(shù)executor.setCorePoolSize(corePoolSize);// 設置較大線程數(shù)executor.setMaxPoolSize(maxPoolSize);// 設置隊列容量executor.setQueueCapacity(queueCapacity);// 設置線程活躍時間(秒)executor.setKeepAliveSeconds(60);// 設置默認線程名稱executor.setThreadNamePrefix(namePrefix);// 設置拒絕策略executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());// 等待所有任務結束后再關閉線程池executor.setWaitForTasksToCompleteOnShutdown(true);executor.initialize();;return executor;}}
在其它文件中需要這樣使用:
@Resource(name="asyncServiceTaskExecutor")private ThreadPoolTaskExecutor asyncServiceTaskExecutor;
不要直接使用@Autowired,否則會提示失敗的
@Autowiredprivate ThreadPoolTaskExecutor asyncServiceTaskExecutor;
到此,相信大家對“JDK線程池和Spring線程池的使用實例介紹”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!