非同期プログラミングは、ノンブロッキングのイベント駆動型のプログラミングモデルを提供します。この記事では Java 非同期プログラミングの実践方法を紹介しますので、興味のある方はぜひ一緒に見てください
非同期とは何ですか?なぜそれを使うのでしょうか? 非同期プログラミングは、ノンブロッキングのイベント駆動型プログラミング モデルを提供します。 このプログラミング モデルでは、システム内の複数のコアを利用してタスクを実行し、並列処理を実現し、それによってアプリケーションのスループットを実現します。ここでのスループット率とは、単位時間あたりに実行されるタスクの数を指します。 このプログラミング スタイルでは、作業単位はメイン アプリケーション スレッドとは独立して実行され、呼び出し元のスレッドにそのステータス (成功、処理中、または失敗) を通知します。
ブロッキングモデルを排除するには非同期が必要です。実際、非同期プログラミング モデルは同じスレッドを使用して複数のリクエストを処理でき、これらのリクエストがこのスレッドをブロックすることはありません。アプリケーションがスレッドを使用してタスクを実行し、タスクが完了するのを待ってから次のステップに進むと想像してください。ロギング フレームワークはその良い例です。通常、例外やエラーをファイル、データベース、またはその他の同様の場所などのターゲットに記録する必要があります。プログラムを実行する前にログが書き込まれるのを待つ必要はありません。そうしないと、プログラムの応答が影響を受けます。 対照的に、ログ フレームワークへの呼び出しが非同期で行われる場合、アプリケーションは待機することなく他のタスクを同時に実行できます。これはノンブロッキング実行の例です。
Java で非同期を実装するには、java.util.concurrent パッケージの下にある Future と FutureTask を使用する必要があります。Future はインターフェイスであり、FutureTask はその実装クラスです。実際、コードで Future を使用すると、非同期タスクがすぐに実行され、呼び出し元のスレッドは結果の Promise を取得できます。
以下のコード スニペットは、2 つのメソッドを持つインターフェイスを定義します。 1 つは同期メソッド、もう 1 つは非同期メソッドです。
import java.util.concurrent.Future; public interface IDataManager { // synchronous method public String getDataSynchronously(); // asynchronous method public Future<String> getDataAsynchronously(); }
コールバック モデルの欠点は、コールバックが入れ子になっている場合に面倒なことであることに注意してください。
すべきこととしてはいけないこと テストを容易にするために、コード内の複数のスレッドから機能を分離する必要があります。 Java で非同期コードを作成する場合は、呼び出し元のスレッドがブロックされないように、非同期モデルに従う必要があります。
注
Constructorは非同期にすることはできません。コンストラクター内で非同期メソッドを呼び出さないでください。非同期メソッドは、タスクが相互に依存していない場合に特に便利です。呼び出し元のタスクが呼び出されたタスクに依存している場合は、非同期を使用しないでください (翻訳者注: 呼び出し元のスレッドがビジネスでブロックされるため、これは非同期では意味がありません) 非同期メソッドで例外を処理する必要があります。タスク実装の例外。 長時間実行されるタスクは、非同期実行メソッドに対してスレッド コンテキストの切り替えやスレッド状態の保存などを実行する必要があるため、同期実行よりも時間がかかる場合があります。非同期例外とは異なります。 同期例外のヒント: プログラムが特殊な状態になるまで実行されるたびに例外がスローされます。非同期例外の追跡は非常に困難です。したがって、同期例外と非同期例外は、例外を発生させる可能性のあるプログラム内の同期コードまたは非同期コードを意味します。
非同期は、大規模で応答性の高いアプリケーションを設計するために重要です。非同期コールバック モデルには多くの利点があり、プロセッサが他のタスクを実行している間に、非同期コールバック メソッドを利用して負荷の高い I/O 操作を実行できます。ただし、非同期サポートは Java と C# で提供されていますが、非同期プログラミングの実装は必ずしも簡単ではありません。非同期メソッドの使用には注意が必要です。非同期メソッドをいつ使用するか、いつ使用しないかを理解しておく必要があります。 この記事では、非同期プログラミングの概念と、Java プログラミングを使用してそれを実装する方法を紹介します。この記事では、非同期プログラミングを使用するためのベスト プラクティスも示します。読んでくれてありがとう。
Java 7 は、Fork/Join フレームワークを提供します。これは、大きなタスクを、並列実行できる多数の小さなタスクに分割できます。 Java 8 では、par
allelStream は内部で Fork/Join を使用して同時操作を実行します。
Node.js は当然非同期プログラミング モードをサポートしており、golang などの他の言語でもゴルーチンやチャネルを使用して非同期プログラミングを実装することも簡単です。
以上がJava での非同期プログラミングの実践の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
