【翻訳19】-javaのアクチュエータ
7165 ワード
Executors
In all of the previous examples, there's a close connection between the task being done by a new thread, as defined by its Executor Interfaces define the three executor object types. Thread Pools are the most common kind of executor implementation. Fork/Join is a framework (new in JDK 7) for taking advantage of multiple processors.
訳文:アクチュエータは以前のすべてのインスタンスで、新しいスレッドを使用してタスクに近接した接触を持っています.Runnableオブジェクトとして定義されたスレッドと、スレッドは、Threadオブジェクトによって定義されます.これは小型プログラムでよく機能しますが、大型プログラムではスレッドと他のプログラムを別々に管理する必要があります.これらの関数をカプセル化したオブジェクトはexecutorsです.次の章ではexecutorsについて詳しく説明します.実行インタフェースは、3つの実行オブジェクトタイプ を定義する.スレッドプールは最も一般的な実行実装である. は、マルチプロセッサにとって非常に有用なフレームワーク(JDK 7で新しく追加された)として分離され、統合されています.
Executor Interfaces
The
Typically, variables that refer to executor objects are declared as one of these three interface types, not with an executor class type.
The
The Executor interface provides a single method,
with
However, the definition of
The executor implementations in
The
The ExecutorService interface supplements
The
The ScheduledExecutorService interface supplements the methods of its parent
訳文:実行インタフェースjava.util.concurrentパッケージには、3つの実行インタフェースが定義されています.エグゼクティブは、新しいタスクのロードをサポートする簡単なインタフェースです. は、プライベートなタスクとアクチュエータ自体を含む管理ライフサイクルの特性を増加させるサービスを実行します. は、実行サービスをスケジューリングし、サービスのサブインタフェースを実行し、将来または周期的に実行されるタスクをサポートする.
代表的に、実行可能なオブジェクト変数は、実行可能なクラスのタイプではなく、この3つのタイプの1つとして定義されます.エフェクタインタフェースExecutorインタフェースは、一般的なスレッドの作成ルールを定義する簡単な方法を提供します.rがRunnableオブジェクトであり、eがエフェクタオブジェクトである場合は、次の方法で置き換えることができます. (new Thread(r)).start();代替:e.execute(r);しかし、executeの定義はそれほど厳しくない.低レベルのスレッドを作成するルールは、作成後すぐにロードすることです.Executerインタフェースの実装に依存して、executeは同じことを実装することができます.しかし、すでに催促されたワークスレッドで実行するか、rの代わりにキューでワークスレッドが使用可能になるのを待つのが好きです.(このセクションでは、ワークスレッドについて説明します)java.util.concurrentで考えられるエフェクタは、ExecutorServiceおよびScheduleExecutorServiceインタフェースをより十分に使用するように定義されています.彼らはExecutorインタフェースに基づいていますが.サービスインタフェースを実行サービスインタフェースを実行すると、エフェクタが補完されますが、より多くの一般的なコミット方法があります.エフェクタのように、コミットメソッドはRunableオブジェクトを受け入れますが、金額Callableオブジェクトも受け入れられ、その語順タスクは値を返します.submitメソッドは、Callableの戻り値を再取得し、CallableおよびRunnableタスクのステータスを管理するために使用されるFutureオブジェクトを返します.サービスを実行することで、Callableオブジェクトの大規模なセットをコミットする方法も提供されます.ExecutorServiceは、多くの方法でアクチュエータを閉じることを管理します.即時コミットをサポートするためには、interruptsメソッドを正しく実装する必要があります.スケジューリング実行サービスインタフェーススケジューリングサービスインタフェースは、その親に基づいてサービスを実行する多くのスケジューリング方法を提供し、RunnableまたはCallableタスクを指定された遅延後に実行することができる.さらに、このインタフェースはschedulAtFixedRateとscheduleWithFixDelayを定義し、定義された間隔内で指定されたタスクを繰り返し実行することをサポートします.
In all of the previous examples, there's a close connection between the task being done by a new thread, as defined by its
Runnable
object, and the thread itself, as defined by a Thread
object. This works well for small applications, but in large-scale applications, it makes sense to separate thread management and creation from the rest of the application. Objects that encapsulate these functions are known as executors. The following subsections describe executors in detail. 訳文:アクチュエータは以前のすべてのインスタンスで、新しいスレッドを使用してタスクに近接した接触を持っています.Runnableオブジェクトとして定義されたスレッドと、スレッドは、Threadオブジェクトによって定義されます.これは小型プログラムでよく機能しますが、大型プログラムではスレッドと他のプログラムを別々に管理する必要があります.これらの関数をカプセル化したオブジェクトはexecutorsです.次の章ではexecutorsについて詳しく説明します.
Executor Interfaces
The
java.util.concurrent
package defines three executor interfaces: Executor
, a simple interface that supports launching new tasks. ExecutorService
, a subinterface of Executor
, which adds features that help manage the lifecycle, both of the individual tasks and of the executor itself. ScheduledExecutorService
, a subinterface of ExecutorService
, supports future and/or periodic execution of tasks. Typically, variables that refer to executor objects are declared as one of these three interface types, not with an executor class type.
The
Executor
Interface The Executor interface provides a single method,
execute
, designed to be a drop-in replacement for a common thread-creation idiom. If r
is a Runnable
object, and e
is an Executor
object you can replace (new Thread(r)).start();
with
e.execute(r);
However, the definition of
execute
is less specific. The low-level idiom creates a new thread and launches it immediately. Depending on the Executor
implementation, execute
may do the same thing, but is more likely to use an existing worker thread to run r
, or to place r
in a queue to wait for a worker thread to become available. (We'll describe worker threads in the section on Thread Pools .) The executor implementations in
java.util.concurrent
are designed to make full use of the more advanced ExecutorService
and ScheduledExecutorService
interfaces, although they also work with the base Executor
interface. The
ExecutorService
Interface The ExecutorService interface supplements
execute
with a similar, but more versatile submit
method. Like execute
, submit
accepts Runnable
objects, but also accepts Callable objects, which allow the task to return a value. The submit
method returns a Future object, which is used to retrieve the Callable
return value and to manage the status of both Callable
and Runnable
tasks. ExecutorService
also provides methods for submitting large collections of Callable
objects. Finally, ExecutorService
provides a number of methods for managing the shutdown of the executor. To support immediate shutdown, tasks should handle interrupts correctly. The
ScheduledExecutorService
Interface The ScheduledExecutorService interface supplements the methods of its parent
ExecutorService
with schedule
, which executes a Runnable
or Callable
task after a specified delay. In addition, the interface defines scheduleAtFixedRate
and scheduleWithFixedDelay
, which executes specified tasks repeatedly, at defined intervals. 訳文:実行インタフェースjava.util.concurrentパッケージには、3つの実行インタフェースが定義されています.
代表的に、実行可能なオブジェクト変数は、実行可能なクラスのタイプではなく、この3つのタイプの1つとして定義されます.エフェクタインタフェースExecutorインタフェースは、一般的なスレッドの作成ルールを定義する簡単な方法を提供します.rがRunnableオブジェクトであり、eがエフェクタオブジェクトである場合は、次の方法で置き換えることができます. (new Thread(r)).start();代替:e.execute(r);しかし、executeの定義はそれほど厳しくない.低レベルのスレッドを作成するルールは、作成後すぐにロードすることです.Executerインタフェースの実装に依存して、executeは同じことを実装することができます.しかし、すでに催促されたワークスレッドで実行するか、rの代わりにキューでワークスレッドが使用可能になるのを待つのが好きです.(このセクションでは、ワークスレッドについて説明します)java.util.concurrentで考えられるエフェクタは、ExecutorServiceおよびScheduleExecutorServiceインタフェースをより十分に使用するように定義されています.彼らはExecutorインタフェースに基づいていますが.サービスインタフェースを実行サービスインタフェースを実行すると、エフェクタが補完されますが、より多くの一般的なコミット方法があります.エフェクタのように、コミットメソッドはRunableオブジェクトを受け入れますが、金額Callableオブジェクトも受け入れられ、その語順タスクは値を返します.submitメソッドは、Callableの戻り値を再取得し、CallableおよびRunnableタスクのステータスを管理するために使用されるFutureオブジェクトを返します.サービスを実行することで、Callableオブジェクトの大規模なセットをコミットする方法も提供されます.ExecutorServiceは、多くの方法でアクチュエータを閉じることを管理します.即時コミットをサポートするためには、interruptsメソッドを正しく実装する必要があります.スケジューリング実行サービスインタフェーススケジューリングサービスインタフェースは、その親に基づいてサービスを実行する多くのスケジューリング方法を提供し、RunnableまたはCallableタスクを指定された遅延後に実行することができる.さらに、このインタフェースはschedulAtFixedRateとscheduleWithFixDelayを定義し、定義された間隔内で指定されたタスクを繰り返し実行することをサポートします.