4. 基於@async返回值的呼叫
refspring是通過任務執行器(taskexecutor)來實現多執行緒和併發程式設計,使用threadpooltaskexecutor來建立乙個基於線城池的taskexecutor。在使用執行緒池的大多數情況下都是非同步非阻塞的。我們配置註解@enableasync
可以開啟非同步任務。然後在實際執行的方法上配置註解@async
上宣告是非同步任務。
首先使用@enableasync
來開啟springboot對於非同步任務的支援
@enableasync
public
class
}配置類實現介面asyncconfigurator,返回乙個threadpooltaskexecutor執行緒池物件。
@configuration
@enableasync
public class asynctaskconfig implements asyncconfigurer
@override
public asyncuncaughtexceptionhandler getasyncuncaughtexceptionhandler()
}
3.1 任務執行
通過@async
註解表明該方法是非同步方法,如果註解在類上,那表明這個類裡面的所有方法都是非同步的。
@service
public class asynctaskservice
}
3.2 測試**@runwith (springrunner.class)
@springboottest
@autowired
private asynctaskservice asynctaskservice;
@test
public void contextloads()
@test
public void threadtest() }}
測試結果
執行緒threadpooltaskexecutor-4 執行非同步任務:3
執行緒threadpooltaskexecutor-2 執行非同步任務:1
執行緒threadpooltaskexecutor-1 執行非同步任務:0
執行緒threadpooltaskexecutor-1 執行非同步任務:7
執行緒threadpooltaskexecutor-1 執行非同步任務:8
執行緒threadpooltaskexecutor-1 執行非同步任務:9
執行緒threadpooltaskexecutor-1 執行非同步任務:10
執行緒threadpooltaskexecutor-5 執行非同步任務:4
執行緒threadpooltaskexecutor-3 執行非同步任務:2
執行緒threadpooltaskexecutor-5 執行非同步任務:12
執行緒threadpooltaskexecutor-1 執行非同步任務:11
執行緒threadpooltaskexecutor-2 執行非同步任務:6
執行緒threadpooltaskexecutor-4 執行非同步任務:5
執行緒threadpooltaskexecutor-2 執行非同步任務:16
執行緒threadpooltaskexecutor-1 執行非同步任務:15
執行緒threadpooltaskexecutor-5 執行非同步任務:14
執行緒threadpooltaskexecutor-3 執行非同步任務:13
執行緒threadpooltaskexecutor-1 執行非同步任務:19
執行緒threadpooltaskexecutor-2 執行非同步任務:18
執行緒threadpooltaskexecutor-4 執行非同步任務:17
通過future來接受非同步方法的處理結果
@async
public futuresubbyasync() throws exception
返回的資料型別為future型別,實為乙個介面,具體的結果型別為asyncresult
// 呼叫非同步方法
futuretask = arithmeticservice.subbyasync();
// 接受非同步方法結果
while (true)
}
Spring Boot定時器建立及使用解析
建立定時器 因為專案需要定時在後端執行任務重新整理資料,不需要從前端呼叫介面,所以需要使用定時器。基於註解方式 scheduled預設為單執行緒。12 3456 78910 1112 1314 1516 1718 1920 2122 23package com.ruanshuai.demo.util...
使用idea建立spring boot 專案
一 通過官網建立新專案 1 進入spring boot的官網 2 點選上圖紅框內容 3 選擇對應的版本和語言及其其他設定 5 解壓 6 開啟idea匯入專案檔案 二 通過idea腳手架工具建立專案 3 專案包名的相關配置 4 新增啟動器 5 選擇專案路徑 完成 三 通過idea的m en建立專案 2...
spring boot日誌配置及使用
今天我們就來說說spring boot的日誌使用 1 日誌的輸出格式 d表示日期時間,thread表示執行緒名,5level 級別從左顯示5個字元寬度 logger 表示logger名字最長50個字元,否則按照句點分割。msg 日誌訊息,n是換行符 舉例 d thread 5level logger...