Spring Boot 는 Spring 의 비동기 스 레 드 풀 을 사용 하여 이 루어 집 니 다.
5016 단어 SpringBoot비동기 스 레 드 탱크
스 레 드 탱크 는 이름 으로 볼 때 스 레 드 를 저장 하 는'연못'입 니 다.모든 일이 일리 가 있 습 니 다.그 스 레 드 탱크 의 장점 은 어디 에 있 습 니까?
우 리 는 컴퓨터 로 하여 금 우 리 를 위해 일 을 하 게 해 야 한다.사실은 모두 스 레 드 를 사용 하고 있다.사용 방법 은 new
Runnable
인터페이스 나 새로운 하위 클래스 이다.Thread
류 에 계승 하면 스 레 드 대상 의 생 성과 소각 과 관련 될 것 이다.이 두 가지 조작 은 우리 시스템 프로세서 자원 을 소모 하 는 것 임 에 틀림없다.그러면 어떻게 이 문 제 를 해결 할 것 인가?스 레 드 탱크 는 사실 이 문 제 를 해결 하기 위해 생 긴 것 이다.스 레 드 탱크 는 시스템 성능 과 큰 사용자 의 요청 간 의 모순 을 처리 하 는 방법 을 제공 합 니 다.여러 작업
에 이미 존재 하 는 스 레 드 대상 을 통 해 스 레 드 대상 에 대한 생 성 과 소각 비용 을 낮 출 수 있 습 니 다.고객 이 요청 할 때 스 레 드 대상
은 요청 한 응답 시간 을 향상 시 켜 시스템 서비스의 표현 을 전체적으로 향상 시 킬 수 있 습 니 다.이 블 로 그 는 Spring 에서 비동기 스 레 드 풀 을 어떻게 사용 하 는 지 정리 하고 예 를 들 어 비동기 라 는 개념 을 체험 해 보 는 것 입 니 다.
실습생 왕 군 은 백 스테이지 관리 시스템 의 보고서 분석 을 책임 진다.그의 업 무 는 백 스테이지 시스템 을 운영 하고 버튼 을 누 르 면 데이터 보고 서 를 작성 하 는 것 이다.보고 서 를 볼 필요 가 없다.데이터 양 이 많 기 때문에 보고 서 를 작성 하 는 데 시간 이 오래 걸 리 지만 보고서 와 다른 작업 이 한 라인 에 있 으 면 왕 군 은 다른 일 을 할 수 없다.그래서 보고서 생 성 이라는 임 무 를 컴퓨터 의 다른 스 레 드 에 맡 겨 야 한다.이것 이 바로 비동기 적 인 표현 이다.
Spring 에서 비동기 스 레 드 풀 을 사용 합 니 다.
spring 에서
AsyncConfigurer
이 설정 인 터 페 이 스 를 제공 하여 우리 가 자신의 비동기 스 레 드 풀 을 설정 하 는 데 편리 합 니 다.새 비동기 설정 클래스
나 는 config 패 키 지 를 새로 만 든 후에 일부 구성 요소 의 설정 류 를 모두 안에 넣 는 것 에 습관 이 되 었 다.
package com.example.wyh.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
/**
* @author !!!
*/
@Configuration
@EnableAsync
public class AsyncConfig implements AsyncConfigurer {
@Override
public Executor getAsyncExecutor() {
//
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
//
threadPoolTaskExecutor.setCorePoolSize(10);
//
threadPoolTaskExecutor.setMaxPoolSize(30);
//
threadPoolTaskExecutor.setQueueCapacity(2000);
//
threadPoolTaskExecutor.initialize();
return threadPoolTaskExecutor;
}
}
위의 코드 에서,우 리 는@Configuration
spring 에 게 이것 은 설정 클래스 라 고 알려 주 었 습 니 다.주해@EnableAsync
를 사용 하여 spring 을 비동기 로 사용 할 수 있 도록 합 니 다.이렇게 한 후에 어떤 방법 중의 임 무 를 다른 스 레 드 에 비동기 적 으로 놓 으 려 면 방법 에@Async
주 해 를 더 하면 된다.서비스 인 터 페 이 스 를 새로 만 들 고 구현 합 니 다.
package com.example.wyh.Service;
/**
* @author !!!
*/
public interface AsyncService {
/**
*
*/
public void useAsyncThreadWork();
}
package com.example.wyh.Service;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
/**
* @author !!!
*/
@Service
public class AsyncServiceImp implements AsyncService{
@Override
@Async
public void useAsyncThreadWork() {
System.out.println(Thread.currentThread().getName());
}
}
인터페이스의 구체 적 인 실현 에서 우 리 는 현재 스 레 드 의 이름 을 인쇄 하여 마음의 스 레 드 에서 이 작업 을 수행 하 는 지 확인 합 니 다.또한@Service
주 해 를 통 해 spring 은 서비스 유형의 bean 이 라 고 알려 줍 니 다.그러면 우 리 는 spring 이 자신의 용 기 를 통 해 우리 의 대상 을 관리 할 수 있 습 니 다.이것 이 바로IOC
특성의 표현 입 니 다.컨트롤 러 를 새로 만들어 서 접근,테스트 를 진행 합 니 다.
/**
* @author !!!
*/
@RestController
public class AsyncController {
@Autowired
AsyncService asyncService;
@GetMapping("/testAsync")
public String testAsync()
{
System.out.println(Thread.currentThread().getName());
asyncService.useAsyncThreadWork();
return "testAsync ...";
}
}
이 를 통 해 알 수 있 듯 이 상기 코드 에서 우 리 는@Autowired
주 해 를 사용 하여 방금 Spring 용기 관리 에 맡 긴Service
실현 대상 을 자동 으로 조립 했다.이것 은 spring 의DI
특성 표현 이다.내 가 연 것 은 8090 포트 이기 때문에,내 가 방문 한 것 은 8090 포트 이다.
두 스 레 드 의 이름 을 인쇄 한 것 을 볼 수 있 습 니 다.첫 번 째 는 Controller 에서 실 행 된 스 레 드 이름 입 니 다.두 번 째 는 spring 이 방금 설정 한 스 레 드 풀 에서 추출 한 스 레 드 를 통 해 해당 하 는 작업 을 수행 하 는 것 입 니 다.
총결산
이 블 로 그 는 spring 에서 스 레 드 탱크 를 사용 하여 비동기 적 으로 임 무 를 수행 하 는 기본 적 인 방법 을 소개 하여 프로젝트 에서 비동기 스 레 드 탱크 를 사용 하 는 데 예 를 들 어 보 였 다.
Spring Boot 가 Spring 을 사용 하 는 비동기 스 레 드 풀 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 Spring Boot 비동기 스 레 드 풀 내용 은 우리 의 이전 글 이나 아래 의 관련 글 을 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.