検索
ホームページJava「Executor Service」Java でマルチスレッドを処理する方法

php エディター Youzi が答えを与えます: Executor Service を使用して Java でマルチスレッドを処理することは、スレッド プールとスレッドのライフ サイクルを効果的に管理する効率的な方法です。 Executor Service を使用すると、複数のスレッドを簡単に作成、開始、制御して、タスクの同時実行を実現し、プログラムの効率を向上させることができます。この記事では、Executor Service を使用して Java でマルチスレッドの問題を処理する方法について詳しく説明し、この重要なマルチスレッド処理ツールをより深く理解し、適用できるようにします。

質問の内容

私は単一の顧客向けのソリューションを開発しています。顧客の従業員リストを取得するために API を呼び出す必要があります。ただし、この API (サードパーティ) は一度に 100 人の従業員しか返すことができません。したがって、次の 100 人の従業員のセットを取得するには、毎回オフセットを変更して同じ API を呼び出す必要があります。現在、これは単一のスレッドを使用して処理されるため、従業員の数が増えると、すべての従業員 (たとえば 30,000) を取得する時間も長くなります。 そして、このアプリにはそのような顧客がたくさんいます。

この問題の解決策として、#executorservice を使用してマルチスレッドを実装しようとしました。このソリューションを使用すると、クライアントのすべての従業員を取得するのに必要な時間が短縮されます。

###質問:###

API を呼び出すための複数のスレッドを持つエグゼキューター サービスでは、(複数のクライアントからの) 複数のスレッドはどのように機能しますか?
  1. マルチスレッド環境で次のロジックを使用すると、エンド ユーザーが間違ったデータを取得することになりますか? サンプルコード:
  2. ExecutorService executor = Executors.newFixedThreadPool(2);
    
      ServiceExecutor executor0 = new ServiceExecutor("0");
      ServiceExecutor executor1 = new ServiceExecutor("100");
    
      Future result0 = executor.submit(executor0);
      Future result1 = executor.submit(executor1);
       
      List<String> s1 = new ArrayList<>();
      s1.add(result0.get());
      s2.add(result1.get());
解決策

この質問に対する答えは、クライアントからのリクエストを受信するようにアプリケーションがどのように設定されているかによって大きく異なります。新しいエグゼキューター サービスは受信リクエストごとに作成されますか? それともエグゼキューター サービスはすべてのリクエストで共有されますか?リクエストごとに新しいエグゼキューター サービスを作成すると、あまり長く存在しない新しいスレッドにスペースを割り当てる必要があるため、非常に無駄になります。したがって、複数のリクエストに対して同じ ExecutorService を再利用する方が効率的です。

この場合、

newFixedThreadPool()

の代わりに Executors.newCachedThreadPool() を使用すると、ExecutorService がプール内のスレッド数を動的に増やすことができるため、より柔軟になる可能性があります。必要です。

以上が「Executor Service」Java でマルチスレッドを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はstackoverflowで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。