spring 通過任務執行器(taskexecutor)來實現多mdkwixfpo執行緒和併發程式設計。使用threadpooltaskexecutor可實現乙個基於執行緒池的taskexecutor。而實際開發中任務一般是非阻塞的,即非同步的,所有我們在配置類中通過@enableasync開啟對非同步任務的支援,並通過在實際執行的bean的方法中使用@async註解來宣告其是乙個非同步任務。
一、配置類程式設計客棧
package com.cenobitor.t程式設計客棧askxecutor.config;
import org.springframework.aop.interceptor.asyncuncaughtexceptionhandler;
import org.springframework.context.annotation.configuration;
import org.springwww.cppcns.comframework.scheduling程式設計客棧.annotation.asyncconfigurer;
import org.springframework.scheduling.annotation.enableasync;
import org.springframework.scheduling.concurrent.threadpooltaskexecutor;
import j**a.util.concurrent.executor;
@configuration
@enableasync
public class taskexecutorconfig implements asyncconfigurer
@override
public asyncuncaughtexceptionhandler getasyncuncaughtexceptionhandler()
}1、利用@enableasync註解開啟非同步任務支援
2、配置類實現asyncconfigurer介面並重寫getasyncexecutor方法,並返回乙個threadpooltaskexecutor,這樣我們就獲得了乙個基於執行緒池taskexecutor。
二、任務執行類
package com.cenobitor.taskxecutor.taskservice;
import org.springframework.scheduling.annotation.async;
import org.springframework.stereotype.service;
@service
public class asynctaskservice
@async
public void excuteasynctaskplus(integer i)
}通過@async註解表明該方法是非同步方法,如果註解在類級別,則表明該類所有的方法都是非同步方法,而這裡的方法自動被注入使用threadpooltaskexecutor作為taskexecutor。
如果在非同步方法所在類中呼叫非同步方法,將會失效;
三、執行
package com.cenobitor.taskxecutor;
import com.cenobitor.taskxecutor.taskservice.asynctaskservice;
import org.springframework.context.annotation.annotationconfigapplicationcontext;
public class main
context.close();
}}執行結果:
非同步執行任務:0
非同步執行任務+1:1
非同步執行任務:1
非同步執行任務+1:2
非同步執行任務:2
非同步執行任務:3
非同步執行任務:5
非同步執行任務+1:6
非同步執行任務:6
非同步執行任務+1:7
非同步執行任務:7
非同步執行任務+1:8
非同步執行任務:8
非同步執行任務+1:9
非同步執行任務:9
非同步執行任務+1:10
非同步執行任務+1:3
非同步執行任務:4
非同步執行任務+1:5
非同步執行任務+1:4
注:摘抄自《j**aee開發的顛覆者springboot 實戰》。
springboot整合redis多例項
redis org.springframework.boot groupid spring boot starter data redis artifactid dependency redis.clients groupid jedis artifactid 2.9.0 version depen...
float例項講解
float是個強大的屬性,在實際前端開發過程中,人們經常拿它來進行布局,但有時,使用的不好,也麻煩多多啊。比如,現在我們要實現乙個兩列布局,左邊的列,寬度固定 右邊的列,寬度自動擴充套件。效果圖見下 思路 利用div float,div1為左邊的列,div2為右邊的列,將div1的寬度設定為固定寬度...
float例項講解
float是個強大的屬性,在實際前端開發過程中,人們經常拿它來進行布局,但有時,使用的不好,也麻煩多多啊。比如,現在我們要實現乙個兩列布局,左邊的列,寬度固定 右邊的列,寬度自動擴充套件。效果圖見下 思路 利用div float,div1為左邊的列,div2為右邊的列,將div1的寬度設定為固定寬度...