亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
執(zhí)行者のフレームワークとは何ですか?
新しいスレッド()の代わりに執(zhí)行者を使用するのはなぜですか?
一般的なスレッドプールタイプ(エグゼキューターツールクラスを通じて作成)
重要なコンポーネントの詳細(xì)な説明
1。ThreadPoolexecutorのコアパラメーター
2。タスクキューの選択
3.実行ハンドラーを拒否しました
タスクの送信方法:実行可能対callable
スレッドプールをエレガントに閉じる方法は?
概要:ベストプラクティスの推奨事項(xiàng)
ホームページ Java &#&チュートリアル 実際のJavaの同時(shí)性:エグゼキューターフレームワーク

実際のJavaの同時(shí)性:エグゼキューターフレームワーク

Jul 31, 2025 am 01:52 AM
java 同時(shí)

エグゼキューターフレームワークは、スレッド管理とタスクのスケジューリングを簡(jiǎn)素化するためのJavaの並行性ツールであり、そのコアはタスクの提出を?qū)g行から切り離すことです。 1.新しいスレッド()の代わりにエグゼキュータを使用する理由には、リソースの制御不能の回避、パフォーマンスの改善、スレッドの再利用、統(tǒng)一された管理の実裝が含まれます。 2。主なインターフェイスは、エグゼクティアと拡張インターフェイスエグゼクティオルサービスであり、タスクの提出、ライフサイクル管理をサポートし、將來(lái)の結(jié)果を返します。 3.一般的なスレッドプールの種類(lèi)には、newFixedThreadPool、NewCachedThreadPool、NewsIngLethReadExecutor、およびNewsCheduledThreadPoolが含まれます。 4. ThreadPoolexecutorを手動(dòng)で作成し、CorePoolsize、MaximumMumpoolsize、KeepAlivetime、WorkQueue、ThreadFactory、および拒否ExexecutionHandlerパラメーターを明確に設(shè)定することをお?jiǎng)幛幛筏蓼埂?5. OOMを防ぐために、ArrayBlockingQueueなどの境界キューを優(yōu)先する必要があります。 6.拒否ポリシーには、abortpolicy、callerrunspolicy、disdardpolicy、docdardoldestpolicyが含まれます。これは、ビジネスニーズに応じて選択する必要があります。 7.タスクを送信する場(chǎng)合、runnable(返品値なし)または呼び出し可能(返品値で)を使用して、送信方法を介して將來(lái)のオブジェクトを取得できます。 8。スレッドプールを閉じるときは、最初にshutdown()を呼び出し、次にawaittermination()とshutdownnow()を結(jié)合してエレガントなダウンタイムを確保する必要があります。 9.ベストプラクティスには、エグゼキューターのショートカット方法、明示的な構(gòu)成パラメーター、スレッドプールという名前の明示的な構(gòu)成パラメーター、スレッドカウントの合理的な設(shè)定、タイムリーなクロージングスレッドプール、および実行可能な例外の処理が含まれます。エグゼキューターフレームワークを正しく使用すると、リソースの使い果たしやパフォーマンスの問(wèn)題を効果的に回避でき、高電流Javaアプリケーションを構(gòu)築するための基礎(chǔ)となります。

実際のJavaの同時(shí)性:エグゼキューターフレームワーク

Javaでの同時(shí)プログラミングはしばしば頭痛であり、本「Java Concurrency in Practical」は、同時(shí)プログラミングの「聖書(shū)」として知られています。エグゼキューターフレームワーク(エグゼキューターフレームワーク)の説明は、現(xiàn)代のJavaマルチスレッド開(kāi)発を理解する上で重要なリンクです。これにより、直接操作スレッド(スレッド)の面倒でリスクを取り除き、代わりに高レベルの抽象化を使用してタスクの実行を管理することができます。

実際のJavaの同時(shí)性:エグゼキューターフレームワーク

執(zhí)行者のフレームワークとは何ですか?

エグゼキューターフレームワークは、スレッド管理とタスクのスケジューリングを簡(jiǎn)素化するためにJava 5に導(dǎo)入されたAPIのセットであり、コアはjava.util.concurrentパッケージにあります。その設(shè)計(jì)目標(biāo)は、タスクの実行からタスクの提出を分離することです。

最もコアインターフェイスはExecutorです。

実際のJavaの同時(shí)性:エグゼキューターフレームワーク
パブリックインターフェイスエグゼキューター{
    void execute(runnableコマンド);
}

単純に見(jiàn)ないでください。その背後には強(qiáng)力なデザインのアイデアがあります。タスクを送信するだけで、実行する方法(どのスレッドが使用されるか、再利用されるか、非同期であるかどうか)は、実裝クラスによって決定されます。

より一般的に使用されるのは、ライフサイクル管理、タスクの提出リターン結(jié)果(將來(lái))、エレガントな閉鎖などをサポートするExecutorServiceです。

実際のJavaの同時(shí)性:エグゼキューターフレームワーク

新しいスレッド()の代わりに執(zhí)行者を使用するのはなぜですか?

new Thread(runnable).start()直接単純に思えますが、明らかな問(wèn)題があります。

  • 制御不能なリソース:タスクが來(lái)るたびに、スレッドが作成され、システムリソースがすぐに使い果たされます。
  • 管理の欠如:並行性の數(shù)を制限することはできません。スレッドの數(shù)を再利用することはできず、監(jiān)視を統(tǒng)合することはできません。
  • パフォーマンスの低下:糸の作成と破壊のためのオーバーヘッドが高い。

エグゼキューターフレームワークを使用することの利點(diǎn)は次のとおりです。

  • ?スレッドの再利用(スレッドプールを介して)
  • concurrentの數(shù)を制御します
  • respons応答速度を改善します(タスクは、スレッドの作成を待つことなく、來(lái)るときに直接実行されます)
  • unified統(tǒng)合例の取り扱いとリソース管理
  • schupedスケジュールされた定期的なタスクをサポートします(ScheduleDexecutorservice)

一般的なスレッドプールタイプ(エグゼキューターツールクラスを通じて作成)

Executors便利な方法を提供しますが、実際の生産のパラメーターを明確にするために、 ThreadPoolExecutor手動(dòng)で作成することをお?jiǎng)幛幛筏蓼?。ただし、まず一般的なタイプを理解してください?/p>

スレッドプールタイプ説明します適用可能なシナリオ
newFixedThreadPool(n)固定サイズのスレッドプール、最大nスレッドが機(jī)能します安定した負(fù)荷と予測(cè)可能なタスクボリューム
newCachedThreadPool()キャッシュ可能なスレッドプール、60秒でリサイクルされたアイドルスレッド、オンデマンドで作成された短期の非同期タスクは數(shù)多くあり、タスクは非常に予想外です
newSingleThreadExecutor()タスクのシリアル実行を確保するためのシングルスレッドプール順次実行する必要があるタスク
newScheduledThreadPool(n)タイミング/定期的なタスクをサポートするスレッドプールハートビート検出などのタイミングタスク

例:

 executorservice executor = executors.newfixedthreadpool(4);

for(int i = 0; i <10; i){
    executor.execute(() - > {
        system.out.println( "task runing by" thread.currentthread()。getName());
    });
}

// executor.shutdown()を閉じることを忘れないでください。

重要なコンポーネントの詳細(xì)な説明

1。ThreadPoolexecutorのコアパラメーター

次のように重要なパラメーターを使用して、手動(dòng)でスレッドプールを作成する方が安全です。

新しいthreadpoolexecutor(
    corepoolsize、//コアスレッドの數(shù)(居住者)
    Maximumpoolsize、//スレッドの最大數(shù)KeepAlivetime、//非コアスレッドフリーサバイバルタイムユニット、//タイムユニットワークキュー、//タスクキュー(LinkedBlockingQueue、ArrayBlockingQueueなど)
    ThreadFactory、//スレッド作成ファクトリー(カスタムネーブル可能)
    拒否ExecutionHandler //ポリシーを拒否);

and?注: Executors.newFixedThreadPool() 、メモリオーバーフロー(OOM)を引き起こす可能性のある、無(wú)制限のキュー( LinkedBlockingQueue )を使用します。生産環(huán)境では注意して使用してください。

2。タスクキューの選択

  • ArrayBlockingQueue :境界線のキュー、推奨、リソースの疲労を防ぎます
  • LinkedBlockingQueue :バウンドされていないキュー、メモリに簡(jiǎn)単に記入できます
  • SynchronousQueue :要素が保存されていません。各挿入物は取り外しを待つ必要があります(NewCachedThreadPoolに適合)
  • PriorityBlockingQueue :優(yōu)先タスクキューをサポートします

3.実行ハンドラーを拒否しました

スレッドプールが閉じられているか、キューがいっぱいになった場(chǎng)合、新しいタスクは拒否されます。一般的な戦略:

  • AbortPolicyRejectedExecutionException (デフォルト)を投げる
  • CallerRunsPolicy :タスク自體を提出するスレッド(コミット速度を遅くします)
  • DiscardPolicy :靜かにタスクを破棄します
  • DiscardOldestPolicy :キューで最も古いタスクを破棄し、再度送信しようとします

AbortPolicyログを使用して警告するなど、ビジネスの選択に基づいてAbortPolicyログアラートを使用することをお?jiǎng)幛幛筏蓼埂?/p>


タスクの送信方法:実行可能対callable

  • execute(Runnable) :返品値なし
  • submit(Runnable)Future<?>を返します。これは、完了したかどうかを判斷するために使用できます
  • submit(Callable<T>)Future<T>を返して、返品値または例外を取得する
future <integer> future = executor.submit(() - > {{
    返品42;
});

integer result = future.get(); //ブロックして結(jié)果を待ちます

invokeAll()を使用してバッチに複數(shù)の呼び出し可能なものを送信したり、 invokeAny()提出して最初の完了した結(jié)果を返すこともできます。


スレッドプールをエレガントに閉じる方法は?

直接shutdown()で十分ではありません、それは推奨されます:

 executor.shutdown(); //新しいタスクはもう受信されなくなりました{
    if(!executor.awaittermination(60、timeunit.seconds)){
        executor.shutdownnow(); //実行タスクを中斷してみてください}
} catch(arternedexception e){
    executor.shutdownnow();
    thread.currentThread()。
}

これにより、スレッドプールには、アプリケーションが終了する前に既存のタスクを完了するのに十分な時(shí)間があります。


概要:ベストプラクティスの推奨事項(xiàng)

  • Executorsのショートカット方法を使用してスレッドプール(特に固定されていないキュー)を作成することは避けてください
  • ThreadPoolExecutorを使用して、キューサイズを明確にし、ポリシーを拒否するパラメーターを明示的に構(gòu)成します
  • troubleシューティングを容易にするために、スレッドプール( ThreadFactoryを介して)に名前を付けます
  • coreprase corePoolSizemaxPoolSizeを設(shè)定し、圧力測(cè)定調(diào)整と組み合わせて
  • reressueリソースの漏れを避けるために、スレッドプールを閉じることを忘れないでください
  • ?例外処理:內(nèi)部的にキャッチを試す必要があります。

基本的にそれだけです。エグゼキューターフレームワークは、複雑なスレッド管理を簡(jiǎn)潔なインターフェイスにカプセル化し、最新のJava Concurrentプログラミングの礎(chǔ)石です。それを理解することで、より堅(jiān)牢なコードを書(shū)き込むだけでなく、「スレッドフル」、「CPUソアリング」、「メモリオーバーフロー」などの多くのオンライン問(wèn)題を回避します。

複雑ではありませんが、詳細(xì)を無(wú)視するのは簡(jiǎn)単です。

以上が実際のJavaの同時(shí)性:エグゼキューターフレームワークの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類(lèi)リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Jakarta EEとJavaにRESTFUL APIを構(gòu)築します Jakarta EEとJavaにRESTFUL APIを構(gòu)築します Jul 30, 2025 am 03:05 AM

setupamaven/gradleprojectwithjax-rsdependencieslikejersey; 2.createarestresourceingnotationssuchas@pathand@get; 3.configuretheapplicationviaapplicationubclassorweb.xml;

Javaプロジェクト管理のためのMavenの開(kāi)発者ガイド Javaプロジェクト管理のためのMavenの開(kāi)発者ガイド Jul 30, 2025 am 02:41 AM

Mavenは、Javaプロジェクト管理と建設(shè)の標(biāo)準(zhǔn)ツールです。答えは、POM.xmlを使用してプロジェクト構(gòu)造、依存関係管理、建設(shè)ライフサイクルの自動(dòng)化、プラグイン拡張機(jī)能を標(biāo)準(zhǔn)化するという事実にあります。 1. pom.xmlを使用して、GroupID、artifactid、バージョン、依存関係を定義します。 2。MVNCLEAN、コンパイル、テスト、パッケージ、インストール、展開(kāi)などのマスターコアコマンド。 3.依存関係管理と除外を使用して、依存関係バージョンと競(jìng)合を管理します。 4.マルチモジュールプロジェクト構(gòu)造を通じて大規(guī)模なアプリケーションを整理し、親POMによって均一に管理されます。 5。

CSSダークモードのトグル例 CSSダークモードのトグル例 Jul 30, 2025 am 05:28 AM

まず、JavaScriptを使用して、ユーザーシステムの設(shè)定とローカルに保存されたテーマ設(shè)定を取得し、ページテーマを初期化します。 1. HTML構(gòu)造には、トピックの切り替えをトリガーするボタンが含まれています。 2。CSSの使用:rootは明るいテーマ変數(shù)を定義し、.dark-modeクラスは暗いテーマ変數(shù)を定義し、これらの変數(shù)をvar()を介して適用します。 3. JavaScript検出は、カラーのスchemeを好み、LocalStorageを読み取り、最初のテーマを決定します。 4.ボタンをクリックするときにHTML要素のダークモードクラスを切り替え、現(xiàn)在の狀態(tài)をLocalStorageに保存します。 5.すべての色の変更には、ユーザーを強(qiáng)化するために0.3秒の移行アニメーションが伴います

CSSドロップダウンメニューの例 CSSドロップダウンメニューの例 Jul 30, 2025 am 05:36 AM

はい、一般的なCSSドロップダウンメニューは、JavaScriptなしで純粋なHTMLおよびCSSを介して実裝できます。 1.ネストされたULとLIを使用して、メニュー構(gòu)造を構(gòu)築します。 2。:Hover Pseudo-Classを使用して、プルダウンコンテンツのディスプレイと非表示を制御します。 3。位置の設(shè)定:親liの親relative、およびサブメニューは位置を使用して配置されます:Absolute; 4. submenuは表示されます:なし、それは表示されます:ホバリング時(shí)にブロック。 5.マルチレベルのプルダウンは、ネスティングを通じて、移行と組み合わせ、フェードインアニメーションを追加し、メディアクエリを備えたモバイルターミナルに適合させることができます。ソリューション全體はシンプルで、JavaScriptサポートを必要としません。これは大規(guī)模に適しています

ハッシュにJava Messagedigestを使用する方法(MD5、SHA-256)? ハッシュにJava Messagedigestを使用する方法(MD5、SHA-256)? Jul 30, 2025 am 02:58 AM

Javaを使用してハッシュ値を生成するには、Messaged Gigestクラスを通じて実裝できます。 1. MD5やSHA-256などの指定されたアルゴリズムのインスタンスを取得します。 2。.update()メソッドを呼び出して、暗號(hào)化されるデータを渡します。 3. .digest()メソッドを呼び出して、ハッシュバイト配列を取得します。 4.バイト配列を読み取りのために16進(jìn)列に変換します。大きなファイルなどの入力については、チャンクで読み取り、.update()を複數(shù)回呼び出します。セキュリティを確保するために、MD5またはSHA-1の代わりにSHA-256を使用することをお?jiǎng)幛幛筏蓼埂?/p>

Python Parse Date Stringの例 Python Parse Date Stringの例 Jul 30, 2025 am 03:32 AM

DateTime.Strtime()を使用して、日付文字列をDateTimeオブジェクトに変換します。 1?;镜膜适褂梅ǎ骸?023-10-05」は、「%y-%m-%d」を介したdatetimeオブジェクトとしての解析です。 2?!福/%d/%y」などの複數(shù)の形式をサポートして、アメリカの日付を解析する、「%d/%m/%y」を解析するために英國(guó)の日付を解析する、「%b%d、%y%i:%m%p」 3. dateutil.parser.parse()を使用して、不明な形式を自動(dòng)的に推測(cè)します。 4。.dを使用してください

Sublime Text Auto Close HTMLタグ Sublime Text Auto Close HTMLタグ Jul 30, 2025 am 02:41 AM

エメットプラグインをインストールすると、タグのインテリジェントな自動(dòng)閉鎖を?qū)g現(xiàn)し、略語(yǔ)構(gòu)文をサポートできます。 2.「auto_match_enabled」を有効にする:sublimeが自動(dòng)的にシンプルなタグを自動(dòng)的に完了できるようにする。 3。ALTを使用します。 (Win)またはCtrlシフト。 (Mac)現(xiàn)在のタグを手動(dòng)で閉じるためのショートカットキー - 日常生活でエメットを使用することをお?jiǎng)幛幛筏蓼?。後者?つの方法を組み合わせることができます。これは効率的で簡(jiǎn)単に設(shè)定できます。

vscode settings.jsonの場(chǎng)所 vscode settings.jsonの場(chǎng)所 Aug 01, 2025 am 06:12 AM

settings.jsonファイルは、ユーザーレベルまたはワークスペースレベルのパスにあり、VSCODE設(shè)定のカスタマイズに使用されます。 1。ユーザーレベルのパス:WindowsはC:\ users \\ appdata \ roaming \ code \ user \ settings.json、macos is/users //settings.json、linux is /home/.config/code/user/settings.json; 2。Workspace-Level Path:.vscode/settings Project Root Directoryの設(shè)定

See all articles