springboot中使用線程池

1.什么場景下使用線程池?

在異步的場景下,可以使用線程池

不需要同步等待,

不需要管上一個方法是否執行完畢,你當前的方法就可以立即執行

我們來模擬一下,在一個方法里面執行3個子任務,不需要相互等待

2.代碼引入線程池配置類

package com.example.demo2.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.concurrent.*;/*** 線程池工具類*/
@Configuration
public class XianChengConfig {/*** 創建線程池放入ioc容器*/@Beanpublic ThreadPoolExecutor threadPoolExecutor(){//核心線程數int corePoolSize = 10;//最大線程數int maximumPoolSize =10;//線程存活時間單位long keepAliveTime = 60;//線程存活時間 秒TimeUnit unit = TimeUnit.SECONDS;//任務隊列BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(100);//線程工廠ThreadFactory threadFactory = Executors.defaultThreadFactory();//拒絕策略 誰調用誰執行RejectedExecutionHandler handler = new ThreadPoolExecutor.CallerRunsPolicy();ThreadPoolExecutor bean = new ThreadPoolExecutor( corePoolSize,maximumPoolSize,keepAliveTime,unit,workQueue,threadFactory,handler);return bean;}
}

3.使用線程池

package com.example.demo2.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.ThreadPoolExecutor;@RestController
public class TestController {@Autowiredprivate ThreadPoolExecutor threadPoolExecutor;@GetMapping("/test")public String test() {System.out.println("---------------方法1------------------");threadPoolExecutor.execute(()->{//異步執行 角色任務syncRole();});System.out.println("---------------方法2------------------");threadPoolExecutor.execute(()->{//異步執行 用戶任務syncUser();});System.out.println("----------------方法3-----------------");threadPoolExecutor.execute(()->{//異步執行 菜單任務syncMenu();});return "ok";}private void syncRole(){System.out.println("開始獲取角色,線程名稱:"+Thread.currentThread().getName());try {//阻塞4秒Thread.sleep(1000*4);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("結束獲取角色,線程名稱:"+Thread.currentThread().getName());}private void syncUser(){System.out.println("開始獲取用戶,線程名稱:"+Thread.currentThread().getName());try {//阻塞3秒Thread.sleep(1000*3);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("結束獲取用戶,線程名稱:"+Thread.currentThread().getName());}private void syncMenu(){System.out.println("開始獲取菜單,線程名稱:"+Thread.currentThread().getName());try {//阻塞2秒Thread.sleep(1000*2);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("結束獲取菜單,線程名稱:"+Thread.currentThread().getName());}
}

http://localhost:8080/test

可以看到,角色沒有執行完,用戶開始執行

用戶沒有執行完,菜單也開始執行

3個任務不需要等待其他方法執行完,才去執行自己的任務

這就是異步的場景,這種場景下就可以使用多線程

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87645.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87645.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87645.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Flask+LayUI開發手記(十):構建統一的選項集合服務

作為前端最主要的組件&#xff0c;無論是layui-table表格還是layui-form表單&#xff0c;其中都涉及到選項列的處理。如果是普通編程&#xff0c;一個任務對應一個程序&#xff0c;自然可以就事論事地單對單處理&#xff0c;前后端都配制好選項&#xff0c;手工保證兩者的一致性…

redis的數據初始化或增量更新的方法

做系統開發的時候&#xff0c;經常需要切換環境&#xff0c;做一些數據的初始化的工作&#xff0c;而redis的初始化&#xff0c;假如通過命令來執行&#xff0c;又太復雜&#xff0c;因為redis有很多種數據類型&#xff0c;全部通過敲擊命令來初始化的話&#xff0c;打的命令實…

【PaddleOCR】OCR表格識別數據集介紹,包含PubTabNet、好未來表格識別、WTW中文場景表格等數據,持續更新中......

&#x1f9d1; 博主簡介&#xff1a;曾任某智慧城市類企業算法總監&#xff0c;目前在美國市場的物流公司從事高級算法工程師一職&#xff0c;深耕人工智能領域&#xff0c;精通python數據挖掘、可視化、機器學習等&#xff0c;發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

sparkjar任務運行

mainclass&#xff1a; test.sparkjar.SparkJarTest

Web攻防-文件下載文件讀取文件刪除目錄遍歷路徑穿越

知識點&#xff1a; 1、WEB攻防-文件下載&讀取&刪除-功能點&URL 2、WEB攻防-目錄遍歷&穿越-功能點&URL 黑盒分析&#xff1a; 1、功能點 文件上傳&#xff0c;文件下載&#xff0c;文件刪除&#xff0c;文件管理器等地方 2、URL特征 文件名&#xff1a; d…

使用LIMIT + OFFSET 分頁時,數據重復的風險

在使用 LIMIT OFFSET 分頁時&#xff0c;數據重復的風險不僅與排序字段的唯一性有關&#xff0c;還與數據變動&#xff08;插入、刪除、更新&#xff09;密切相關。以下是詳細分析&#xff1a; 一、數據變動如何導致分頁異常 1. 插入新數據 場景&#xff1a;用戶在瀏覽第 1 頁…

Excel 數據透視表不夠用時,如何處理來自多個數據源的數據?

當數據透視表感到“吃力”時&#xff0c;我們該怎么辦&#xff1a; 數據量巨大&#xff1a;Excel工作表有104萬行的限制&#xff0c;當有幾十萬行數據時&#xff0c;透視表和公式就會變得非常卡頓。數據來源多樣&#xff1a;數據分散在多個Excel文件、CSV文件、數據庫甚至網頁…

cf(1034)Div3(補題A B C D E F)

哈&#xff0c;這個比賽在開了不久之后&#xff0c;不知道為啥卡了差不多20來分鐘&#xff0c;后面卡著卡著就想睡覺了。實在是太困了.... 題目意思&#xff1a; Alice做一次操作&#xff0c;刪除任意數字a,而Bob做一次操作刪除b使得ab對4取余是3。 獲勝條件&#xff0c;有人…

瀏覽器與服務器的交互

瀏覽器地址欄輸入URL&#xff08;網址??&#xff09; ????(1) 服務器進行URL解析??&#xff1a;驗證URL格式&#xff0c;提取協議、域名等 ????(2) 服務器進行DNS查詢??&#xff1a;將域名轉換為IP地址&#xff08;可能涉及緩存或DNS預取&#xff09; ????…

Spring Boot中POST請求參數校驗的實戰指南

在現代的Web開發中&#xff0c;數據校驗是確保應用程序穩定性和安全性的關鍵環節。Spring Boot提供了強大而靈活的校驗機制&#xff0c;能夠幫助開發者輕松地對POST請求參數進行校驗。本文將詳細介紹如何在Spring Boot中實現POST請求參數的校驗&#xff0c;并通過具體的代碼示例…

Spring Boot + MyBatis/MyBatis Plus:XML中循環處理List參數的終極指南

重要提醒&#xff1a;使用Param注解時&#xff0c;務必導入正確的包&#xff01; import org.apache.ibatis.annotations.Param; 很多開發者容易錯誤導入Spring的Param&#xff0c;導致參數綁定失敗&#xff01; 一、為什么需要傳遞List參數&#xff1f; 最常見的場景是動態構…

Design Compiler:自適應重定時(Adaptive Retiming)

相關閱讀 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 簡介 重定時是DC Ultra引入的一種時序優化技術&#xff0c;可以將時序單元&#xff08;觸發器和鎖存器&#xff09;穿越組合邏輯前后移動&#xff0c;以優化設…

解決kali Linux在VMware中的全局縮放問題

在每次啟動kali時&#xff0c;因為屏幕分辨率過高&#xff0c;系統整體特別小&#xff0c;該怎么操作調整合適呢 在搜索中搜索kali HiDPI Mode 選擇yes 然后就會自動調整合適了

Python關鍵字梳理

在 Python 中&#xff0c;關鍵字&#xff08;Keywords&#xff09;是具有特殊含義的保留字&#xff0c;它們用于定義語法和結構。async 是 Python 3.5 引入的關鍵字&#xff0c;用于支持異步編程&#xff08;Asynchronous Programming&#xff09;。下面我將詳細講解 async 及其…

結構體實戰:用Rust編寫矩形面積計算器

文章目錄結構體實戰&#xff1a;用Rust編寫矩形面積計算器&#x1f4d0; 問題描述1?? 基礎版&#xff1a;獨立變量&#xff08;混亂版&#xff09;2?? 進階版&#xff1a;使用元組3?? 終極版&#xff1a;使用結構體&#xff08;優雅版&#xff09;&#x1f3af; 運行結果…

基于開源鏈動2+1模式AI智能名片S2B2C商城小程序的場景零售創新研究

摘要&#xff1a;本文聚焦場景消費邏輯&#xff0c;探討開源鏈動21模式AI智能名片S2B2C商城小程序在場景零售中的應用。通過分析場景消費中消費者體驗的關鍵作用&#xff0c;結合該技術組合的特性&#xff0c;闡述其如何優化場景內容、增強場景美感&#xff0c;為消費者創造超乎…

新發布:26考研院校和專業大綱

復習方向錯了&#xff0c;努力可能白費 近日&#xff0c;多所高校陸續發布2026年碩士研究生招生考試自命題科目大綱&#xff0c;為備考的學子們指明了復習方向。今年的考綱有哪些重要變化&#xff1f;又該如何應對&#xff1f;本文為你全面梳理&#xff01; 院校和專業發布詳情…

matlab/Simulink-全套50個汽車性能建模與仿真源碼模型9

50個simulink模型&#xff08;所有模型羅列如下&#xff0c;沒羅列就是沒有&#xff0c;包含子模塊總共50個。&#xff09; 基于汽車驅動力-行駛阻力平衡圖的汽車動力性仿真模型 基于汽車動力特性圖的汽車動力性仿真模型 基于汽車功率平衡圖的汽車動力性仿真模型 電動汽車動力…

為什么星敏感器(Star Tracker)需要時間同步?—— 從原理到應用的全解析

為什么星敏感器&#xff08;Star Tracker&#xff09;需要時間同步&#xff1f;—— 從原理到應用的全解析 引言 在衛星姿態控制系統中&#xff0c;星敏感器&#xff08;Star Tracker, 簡稱“星敏”&#xff09; 是最精確的姿態測量設備之一&#xff0c;其精度可達角秒級&…

【Cocos TypeScript 零基礎 24.1】

目錄 首次實戰開發心得實戰項目<修仙錄游戲> 首次實戰開發心得 遇到的技術問題也多 發表問題也不少 收入問題 本人都將會寫篇專欄總結一下 實戰項目<修仙錄游戲> 上圖是已上線的實戰項目二維碼 耗費的時間太久了 下次將跟新開發遇到的各種奇奇怪怪的問題 各位看…