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

「Executor Service」Java でマルチスレッドを処理する方法

Feb 22, 2024 pm 12:43 PM

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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