並行処理ユーティリティの概要 |
スレッドプールなどのコンポーネントを独自開発する代わりに並行処理ユーティリティを使用すると、次のような利点があります。
synchronized
、volatile
、wait()
、notify()
、および notifyAll()
) は適切に使用することが困難で、これらの機能を使用した場合に発生するエラーの検出およびデバッグは困難です。標準化され、幅広くテストされた並行構築ブロックを使用することにより、デッドロック、欠乏状態、競合状態、または過度のコンテキストスイッチイングなどのスレッド化の危険を引き起こす潜在的な原因が取り除かれます。並行処理ユーティリティはデッドロック、欠乏状態、競合状態を注意深く検査しました。
つまり、並行アプリケーションの実装に並行処理ユーティリティを使用すると、自分のプログラムをより明確に、より短く、より早く開発できます。信頼性も高く、スケーラブルで、書くことも読むことも、また管理も簡単です。
並行処理ユーティリティには次の項目が含まれます。
Executor
フレームは、標準化された呼び出し、スケジューリング、実行、一連の実行ポリシーに基づく非同期なタスクの制限を行うためのフレームワークです。単一バックグラウンドのスレッド (Swing でのイベントのように)、新しく作成されたスレッド、またはスレッドプール内の要求されたスレッドで実行されるタスクを許可する実装が採用され、開発者は任意の実行ポリシーをサポートする Executor を作成できます。組み込みの実装は、キューの長さ制限および飽和ポリシーなどの設定可能なポリシーを提供し、リソースの無駄な消費を防ぐことによってアプリケーションの安定性を向上させます。
Queue
および BlockingQueue
インタフェース、および高性能の Map
、List
、および Queue
の並行実装が含まれます。
java.util.concurrent.atomic
の原子変数の実装は、ほとんどのプラットフォームにおいて、同期の使用により可能になるパフォーマンスより高いパフォーマンスを提供し、高性能の並行処理アルゴリズムの実装と同時に、カウンタとシーケンス番号のジェネレータを簡便に実装します。
java.util.concurrent.locks
パッケージは同期と同様のメモリセマンティクスを使用する高性能のロック実装を提供します。しかし、ロック、ロックごとの複数の条件変数、字句ではないスコープロックの獲得を試みるときのタイムアウトの指定もサポートし、ロックを獲得するために待機している割り込みスレッドをサポートします。
System.nanoTime
メソッドは、相対的な時間を測定するためにナノ秒の単位でタイムソースへのアクセスを受け入れます。タイムアウトを受け入れるメソッド (たとえば、BlockingQueue.offer
、BlockingQueue.poll
、Lock.tryLock
、Condition.await
、および Thread.sleep
) はタイムアウト値をナノ秒単位で設定できます。System.nanoTime
の実際の精度はプラットフォームにより異なります。
Copyright © 2004 Sun Microsystems, Inc.All Rights Reserved. |
Java ソフトウェア |