TaskExecutor インターフェイスとタイプの概要
一TaskExecutorインターフェース
SpringのTaskExecutorインターフェースは、Java.util.concurrent.Executorインターフェースに相当します。 実際、その存在の主な理由は、スレッド プールを使用する際の Java 5 への依存を抽象化することです。 このインターフェイスにはメソッドexecute(Runnable task)が1つだけあり、スレッドプールのセマンティクスと構成に従って実行タスクを受け入れます。
TaskExecutor は元々、必要に応じて他の Spring コンポーネントにスレッド プールの抽象化を提供するために作成されました。 たとえば、ApplicationEventMulticaster コンポーネント、JMS の AbstractMessageListenerContainer、および Quartz の統合はすべて、TaskExecutor 抽象化を使用してスレッド プールを提供します。 もちろん、Bean がスレッド プールの動作を必要とする場合は、この抽象化レイヤーを使用することもできます。
二 TaskExecutor type
一部の TaskExecutor 実装は Spring ディストリビューション パッケージで事前定義されています。これらを使用すると、自分で実装する必要さえなくなります。
SimpleAsyncTaskExecutor class
この実装はスレッドを再利用しないか、呼び出されるたびに新しいスレッドを開始します。ただし、同時スレッドの合計数の制限の設定は引き続きサポートされており、同時スレッドの合計数の制限を超えると、ポジションが解放されるまで新しい呼び出しはブロックされます。実際のプールが必要な場合は、読み続けてください。
SyncTaskExecutor class
この実装は非同期には実行されません。代わりに、各呼び出しは呼び出しを開始したスレッドで実行されます。主な用途は、単純なテスト ケースなど、マルチスレッドが必要ない場合です。
ConcurrentTaskExecutorクラス
この実装は、Java 5のjava.util.concurrent.Executorクラスのラッパーです。もう 1 つの代替手段として、Executor の構成パラメータを Bean プロパティとして公開する ThreadPoolTaskExecutor クラスがあります。 ConcurrentTaskExecutor を使用する必要があることはほとんどありませんが、ThreadPoolTaskExecutor では不十分な場合は、ConcurrentTaskExecutor が別の代替手段になります。
SimpleThreadPoolTaskExecutorクラス
この実装は実際にはQuartzのSimpleThreadPoolクラスのサブクラスであり、Springのライフサイクルコールバックをリッスンします。これは、Quartz コンポーネントと非 Quartz コンポーネント間で共有する必要があるスレッド プールがある場合の一般的な使用法です。
ThreadPoolTaskExecutor class
java.util.concurrent パッケージの置き換えやダウンポートはサポートしていません。 Doug Lea と Dawid Kurzyniec の java.util.concurrent 実装は両方とも異なるパッケージ構造を使用しているため、正しく実行されません。
この実装は Java 5 環境でのみ使用できますが、この環境では最もよく使用されます。これが公開する Bean プロパティを使用して、java.util.concurrent.ThreadPoolExecutor を構成し、それを TaskExecutor にラップすることができます。 ScheduledThreadPoolExecutor などのより高度なクラスが必要な場合は、代わりに ConcurrentTaskExecutor を使用することをお勧めします。
TimerTaskExecutor class
この実装は背後の実装として TimerTask を使用します。 SyncTaskExecutor との違いは、メソッド呼び出しは別のスレッドで同期されますが、そのスレッドで実行されることです。
WorkManagerTaskExecutorクラス
CommonJはBEAとIBMが共同開発した仕様セットです。これらの仕様は Java ee 標準ではありませんが、BEA および IBM アプリケーション サーバー実装の共通標準です
この実装は、基盤となる実装として CommonJ WorkManager を使用し、Spring コンテキストで CommonJ WorkManager アプリケーションを構成するための最も重要なクラスです。 SimpleThreadPoolTaskExecutor と同様に、このクラスは WorkManager インターフェイスを実装しているため、WorkManager として直接使用できます。
TaskExcutor の 3 つの簡単な例
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 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Python のサポート ベクター マシン (SVM) は、分類および回帰の問題を解決するために使用できる強力な教師あり学習アルゴリズムです。 SVM は、高次元データや非線形問題を処理する場合に優れたパフォーマンスを発揮し、データ マイニング、画像分類、テキスト分類、バイオインフォマティクスなどの分野で広く使用されています。この記事では、Python で分類に SVM を使用する例を紹介します。 scikit-learn ライブラリの SVM モデルを使用します。

Golang は、さまざまなアプリケーションやサービスの開発に使用できる強力で効率的なプログラミング言語です。 Golang では、ポインタは非常に重要な概念であり、データをより柔軟かつ効率的に操作するのに役立ちます。ポインタ変換とは、異なる型間のポインタ操作のプロセスを指します。この記事では、具体的な例を使用して、Golang におけるポインタ変換のベスト プラクティスを学びます。 1. 基本概念 Golang では、各変数にはアドレスがあり、アドレスはメモリ内の変数の位置です。

新世代のフロントエンド フレームワークが出現し続ける中、VUE3 は高速で柔軟、そして使いやすいフロントエンド フレームワークとして愛されています。次に、VUE3 の基本を学び、簡単なビデオ プレーヤーを作成しましょう。 1. VUE3 をインストールする まず、VUE3 をローカルにインストールする必要があります。コマンド ライン ツールを開き、次のコマンドを実行します。 npminstallvue@next 次に、新しい HTML ファイルを作成し、VUE3 を導入します。 <!doctypehtml>

インターネットの急速な発展に伴い、データは今日の情報化時代において最も重要なリソースの 1 つになりました。 Webクローラは、ネットワークデータを自動的に取得・処理する技術として、ますます注目と応用が進んでいます。この記事では、PHPを使って簡単なWebクローラーを開発し、ネットワークデータを自動取得する機能を実現する方法を紹介します。 1. Web クローラーの概要 Web クローラーとは、ネットワーク リソースを自動的に取得して処理する技術であり、主な動作プロセスはブラウザーの動作をシミュレートし、指定された URL アドレスに自動的にアクセスし、すべての情報を抽出することです。

VAE は生成モデルであり、正式名は variationalAutoencoder で、中国語に翻訳すると変分自動エンコーダとなります。これは、画像、音声、テキストなどの新しいデータを生成するために使用できる教師なし学習アルゴリズムです。通常のオートエンコーダと比較して、VAE はより柔軟で強力であり、より複雑で現実的なデータを生成できます。 Python は最も広く使用されているプログラミング言語の 1 つであり、深層学習の主要ツールの 1 つです。 Python には、優れた機械学習と奥深いものが数多くあります。

Oracle インスタンスの数とデータベースのパフォーマンスの関係 Oracle データベースは、業界でよく知られたリレーショナル データベース管理システムの 1 つであり、エンタープライズ レベルのデータ ストレージと管理で広く使用されています。 Oracle データベースでは、インスタンスは非常に重要な概念です。インスタンスとは、メモリー内のOracleデータベースの実行環境を指します。各インスタンスには独立したメモリー構造とバックグラウンド・プロセスがあり、ユーザー・リクエストの処理とデータベース操作の管理に使用されます。インスタンスの数は、Oracle データベースのパフォーマンスと安定性に重要な影響を与えます。

インターネットの普及に伴い、ログイン、登録、パスワードの取得などの操作に確認コードが必要なプロセスになりました。 Ginフレームワークでは、認証コード機能の実装が非常に簡単になりました。この記事では、サードパーティのライブラリを使用して、Gin フレームワークに検証コード機能を実装する方法を紹介し、読者の参考となるサンプル コードを提供します。 1. 依存ライブラリをインストールする 検証コードを使用する前に、サードパーティ ライブラリ goCaptcha をインストールする必要があります。 goCaptcha をインストールするには、goget コマンド $goget-agithub を使用できます。

Generative Adversarial Networks (GAN、Generative Adversarial Networks) は、互いに競合する 2 つのニューラル ネットワークを通じて新しいデータを生成する深層学習アルゴリズムです。 GAN は、画像、音声、テキスト、その他の分野の生成タスクに広く使用されています。この記事では、Python を使用して手書き数字の画像を生成する GAN アルゴリズムの例を作成します。データセットの準備 MNIST データセットをトレーニング データセットとして使用します。 MNIST データセットには以下が含まれます
