TaskExecutor 인터페이스 및 유형 소개
一TaskExecutor 인터페이스
Spring의 TaskExecutor 인터페이스는 Java.util.concurrent.Executor 인터페이스와 동일합니다. 실제로 이 존재의 주된 이유는 스레드 풀을 사용할 때 Java 5에 대한 종속성을 추상화하기 위한 것입니다. 이 인터페이스에는 스레드 풀의 의미 및 구성에 따라 실행 작업을 허용하는 하나의 메소드 실행(실행 가능 작업)만 있습니다.
TaskExecutor는 원래 필요할 때 다른 Spring 구성 요소에 스레드 풀 추상화를 제공하기 위해 만들어졌습니다. 예를 들어, ApplicationEventMulticaster 구성 요소, JMS의 AbstractMessageListenerContainer 및 Quartz 통합은 모두 TaskExecutor 추상화를 사용하여 스레드 풀을 제공합니다. 물론, Bean에 스레드 풀 동작이 필요한 경우 이 추상화 계층을 사용할 수도 있습니다.
two TaskExecutor 유형
일부 TaskExecutor 구현은 Spring 배포 패키지에 미리 정의되어 있습니다. 이를 사용하면 더 이상 직접 구현할 필요도 없습니다.
SimpleAsyncTaskExecutor 클래스
이 구현은 스레드를 재사용하지 않거나 호출될 때마다 새 스레드를 시작합니다. 그러나 총 동시 스레드 수에 대한 제한 설정은 계속 지원합니다. 총 동시 스레드 수에 대한 제한을 초과하면 위치가 해제될 때까지 새 호출이 차단됩니다. 실제 수영장이 필요하다면 계속 읽어보세요.
SyncTaskExecutor 클래스
이 구현은 비동기적으로 실행되지 않습니다. 대신 각 호출은 호출을 시작한 스레드에서 실행됩니다. 간단한 테스트 케이스처럼 멀티스레딩이 필요하지 않은 경우에 주로 사용됩니다.
ConcurrentTaskExecutor 클래스
이 구현은 Java 5 java.util.concurrent.Executor 클래스에 대한 래퍼입니다. 또 다른 대안인 ThreadPoolTaskExecutor 클래스가 있는데, 이는 Executor의 구성 매개변수를 빈 속성으로 노출합니다. ConcurrentTaskExecutor를 사용할 필요는 거의 없지만 ThreadPoolTaskExecutor가 충분하지 않은 경우 ConcurrentTaskExecutor를 다른 대안으로 사용할 수 있습니다.
SimpleThreadPoolTaskExecutor 클래스
이 구현은 실제로 Spring의 라이프사이클 콜백을 수신하는 Quartz의 SimpleThreadPool 클래스의 하위 클래스입니다. 이는 Quartz와 Quartz가 아닌 구성 요소 간에 공유해야 하는 스레드 풀이 있을 때 일반적으로 사용됩니다.
ThreadPoolTaskExecutor 클래스
java.util.concurrent 패키지의 대체 또는 다운포트를 지원하지 않습니다. Doug Lea와 Dawid Kurzyniec의 java.util.concurrent 구현은 서로 다른 패키지 구조를 사용하므로 올바르게 실행되지 않습니다.
이 구현은 Java 5 환경에서만 사용할 수 있지만 이 환경에서 가장 일반적으로 사용됩니다. 노출된 Bean 속성은 java.util.concurrent.ThreadPoolExecutor를 구성하고 이를 TaskExecutor로 래핑하는 데 사용할 수 있습니다. ScheduledThreadPoolExecutor와 같은 고급 클래스가 필요한 경우 대신 ConcurrentTaskExecutor를 사용하는 것이 좋습니다.
TimerTaskExecutor 클래스
이 구현은 TimerTask를 그 뒤에 있는 구현으로 사용합니다. SyncTaskExecutor와 차이점은 메서드 호출이 별도의 스레드에서 이루어지지만 해당 스레드에서 동기화된다는 점입니다.
WorkManagerTaskExecutor 클래스
CommonJ는 BEA와 IBM이 공동으로 개발한 사양 집합입니다. 이러한 사양은 Java ee 표준은 아니지만 BEA 및 IBM 애플리케이션 서버 구현에 대한 공통 표준입니다.
이 구현은 CommonJ WorkManager를 기본 구현으로 사용하며 Spring 컨텍스트에서 CommonJ WorkManager 애플리케이션을 구성하는 데 가장 중요한 클래스입니다. SimpleThreadPoolTaskExecutor와 유사하게 이 클래스는 WorkManager 인터페이스를 구현하므로 WorkManager로 직접 사용할 수 있습니다.
TaskExcutor의 세 가지 간단한 예
1 taskExcutor


package com.test;import org.springframework.core.task.TaskExecutor;public class MainExecutor { private TaskExecutor taskExecutor; public MainExecutor (TaskExecutor taskExecutor) { this.taskExecutor = taskExecutor; } public void printMessages() { for(int i = 0; i < 25; i++) { taskExecutor.execute(new MessagePrinterTask("Message" + i)); } } private class MessagePrinterTask implements Runnable { private String message; public MessagePrinterTask(String message) { this.message = message; } public void run() { System.out.println(message); } } }
2 main


package com.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TaskTest {//本地测试,不用部署到tomcatpublic static void main(String[] args) { System.out.println("测试任务调度开始..."); ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext.xml"); MainExecutor te = (MainExecutor)appContext.getBean("taskExecutorExample"); te.printMessages(); System.out.println("--------"); } }
3.applicationContext.xml配置


<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "/spring-beans.dtd"><beans> <bean id="taskExecutorExample" class="com.test.MainExecutor"> <constructor-arg ref="taskExecutor" /> </bean> <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="5" /> <property name="maxPoolSize" value="10" /> <property name="queueCapacity" value="25" /> </bean></beans>
위 내용은 TaskExecutor 인터페이스 및 유형 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Python의 SVM(Support Vector Machine)은 분류 및 회귀 문제를 해결하는 데 사용할 수 있는 강력한 지도 학습 알고리즘입니다. SVM은 고차원 데이터와 비선형 문제를 처리할 때 탁월한 성능을 발휘하며 데이터 마이닝, 이미지 분류, 텍스트 분류, 생물정보학 및 기타 분야에서 널리 사용됩니다. 이번 글에서는 Python에서 분류를 위해 SVM을 사용하는 예를 소개하겠습니다. scikit-learn 라이브러리의 SVM 모델을 사용하겠습니다.

Golang은 다양한 애플리케이션과 서비스를 개발하는 데 사용할 수 있는 강력하고 효율적인 프로그래밍 언어입니다. Golang에서 포인터는 데이터를 보다 유연하고 효율적으로 운영하는 데 도움이 되는 매우 중요한 개념입니다. 포인터 변환은 다양한 유형 간의 포인터 작업 프로세스를 나타냅니다. 이 기사에서는 특정 예제를 사용하여 Golang의 포인터 변환 모범 사례를 학습합니다. 1. 기본 개념 Golang에서 각 변수에는 주소가 있으며, 주소는 메모리에서 변수의 위치입니다.

Oracle 인스턴스 수와 데이터베이스 성능 간의 관계 Oracle 데이터베이스는 업계에서 잘 알려진 관계형 데이터베이스 관리 시스템 중 하나이며 엔터프라이즈 수준의 데이터 저장 및 관리에 널리 사용됩니다. Oracle 데이터베이스에서 인스턴스는 매우 중요한 개념입니다. 인스턴스는 메모리 내 Oracle 데이터베이스가 실행되는 환경을 의미합니다. 각 인스턴스는 사용자 요청을 처리하고 데이터베이스 작업을 관리하는 데 사용되는 독립적인 메모리 구조와 백그라운드 프로세스를 갖습니다. 인스턴스 수는 Oracle 데이터베이스의 성능과 안정성에 중요한 영향을 미칩니다.

새로운 세대의 프런트엔드 프레임워크가 계속 등장함에 따라 VUE3는 빠르고 유연하며 사용하기 쉬운 프런트엔드 프레임워크로 사랑받고 있습니다. 다음으로 VUE3의 기본을 배우고 간단한 동영상 플레이어를 만들어 보겠습니다. 1. VUE3 설치 먼저 VUE3를 로컬에 설치해야 합니다. 명령줄 도구를 열고 다음 명령을 실행합니다. npminstallvue@next 그런 다음 새 HTML 파일을 만들고 VUE3을 도입합니다. <!doctypehtml>

인터넷의 대중화로 인해 인증 코드는 로그인, 등록, 비밀번호 검색 및 기타 작업에 필요한 프로세스가 되었습니다. Gin 프레임워크에서는 인증 코드 기능 구현이 매우 간단해졌습니다. 이 기사에서는 타사 라이브러리를 사용하여 Gin 프레임워크에서 확인 코드 기능을 구현하는 방법을 소개하고 독자가 참조할 수 있는 샘플 코드를 제공합니다. 1. 종속 라이브러리 설치 인증 코드를 사용하기 전에 타사 라이브러리인 goCaptcha를 설치해야 합니다. goCaptcha를 설치하려면 goget 명령을 사용할 수 있습니다: $goget-ugithub

VAE는 생성 모델이며 전체 이름은 VariationalAutoencoder이며 중국어로 Variational Autoencoder로 번역됩니다. 이미지, 오디오, 텍스트 등과 같은 새로운 데이터를 생성하는 데 사용할 수 있는 비지도 학습 알고리즘입니다. 일반 자동 인코더에 비해 VAE는 더 유연하고 강력하며 더 복잡하고 현실적인 데이터를 생성할 수 있습니다. Python은 가장 널리 사용되는 프로그래밍 언어 중 하나이며 딥 러닝을 위한 주요 도구 중 하나입니다. Python에는 우수한 기계 학습과 심층적인 기능이 많이 있습니다.

GAN(Generative Adversarial Networks)은 두 개의 신경망을 사용하여 서로 경쟁하여 새로운 데이터를 생성하는 딥러닝 알고리즘입니다. GAN은 이미지, 오디오, 텍스트 및 기타 분야의 생성 작업에 널리 사용됩니다. 이 기사에서는 Python을 사용하여 손으로 쓴 숫자 이미지를 생성하는 GAN 알고리즘의 예를 작성합니다. 데이터 세트 준비 MNIST 데이터 세트를 훈련 데이터 세트로 사용하겠습니다. MNIST 데이터 세트에는 다음이 포함됩니다.

인터넷의 급속한 발전으로 인해 데이터는 오늘날 정보화 시대의 가장 중요한 자원 중 하나가 되었습니다. 웹 크롤러는 네트워크 데이터를 자동으로 획득하고 처리하는 기술로 점점 더 많은 관심과 활용을 불러일으키고 있습니다. 이 기사에서는 PHP를 사용하여 간단한 웹 크롤러를 개발하고 네트워크 데이터를 자동으로 가져오는 기능을 구현하는 방법을 소개합니다. 1. 웹 크롤러 개요 웹 크롤러는 네트워크 자원을 자동으로 획득하고 처리하는 기술로, 주요 작업 프로세스는 브라우저 동작을 시뮬레이션하고 지정된 URL 주소에 자동으로 액세스하여 모든 정보를 추출하는 것입니다.
