例項講解spring boot 多執行緒

2022-10-06 02:57:07 字數 2154 閱讀 6777

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的寬度設定為固定寬度...