V
- public abstract class Service<V> extends Object implements Worker<V>, EventTarget
Serviceは、1つ以上のバックグラウンド・スレッドで処理を実行するために必要な情報をカプセル化する非ビジュアル・コンポーネントです。JavaFX UIライブラリの一部として、ServiceはJavaFXアプリケーション・スレッドを認識し、ユーザー・インタフェースとやり取りするマルチスレッド・コードを管理する負荷からアプリケーション開発者を解放するように設計されています。このため、Serviceのすべてのメソッドおよび状態は、JavaFXアプリケーション・スレッドからのみ呼び出されることが意図されています。これに対する例外は、Serviceを最初に構成する場合とServiceを最初に起動する場合であり、これらは任意のスレッドから安全に実行できます。ただし、Serviceが初期化および起動されると、以降はFXスレッドからのみ使用できます。
Serviceは、バックグラウンド・スレッドで処理を実行するTask
を作成および管理します。ServiceはWorker
を実装します。このため、バックグラウンド・タスク操作の状態を監視し、必要に応じてそれを取り消すことができます。Serviceは再利用可能なWorkerであり、リセットおよび再起動できます。このため、Serviceは宣言的に構成し、必要に応じて再起動できます。Serviceが起動すると、Taskをスケジュールし、Taskの状態の変化をリスニングします。Taskは、Serviceを開始した参照を保留することはなく、つまり、Taskの実行はServiceが不要データの収集を実行するのを妨げません。
Serviceに対してExecutor
が指定された場合、これはサービスを実際に実行するために使用されます。それ以外の場合は、デーモン・スレッドが作成および実行されます。デーモン以外のスレッドを作成する場合は、カスタムExecutorを指定します(たとえば、カスタムThreadFactory
を持つThreadPoolExecutor
を使用できます)。
Serviceの目的は宣言的なユースケースを簡素化することであるため、サブクラスは実行する処理に対して入力パラメータをプロパティとして公開する必要があります。たとえば、任意のURLから最初の行を読み取り、それを文字列として返すServiceを記述するとします。そのようなServiceは、単一のプロパティurl
を持つように定義される場合があります。次のように実装される場合があります。
public static class FirstLineService extends Service<String> {
private StringProperty url = new SimpleStringProperty(this, "url");
public final void setUrl(String value) { url.set(value); }
public final String getUrl() { return url.get(); }
public final StringProperty urlProperty() { return url; }
protected Task createTask() {
final String _url = getUrl();
return new Task<String>() {
protected String call() throws Exception {
URL u = new URL(_url);
BufferedReader in = new BufferedReader(
new InputStreamReader(u.openStream()));
String result = in.readLine();
in.close();
return result;
}
};
}
}
Serviceは、デフォルトで、未指定のデフォルトまたは最大スレッド・プール・サイズを持つスレッド・プールExecutorを使用します。これは、稚拙なコードによって数千のスレッドが作成されてシステムが完全に過負荷にならないようにするために行われます。
型 | プロパティと説明 |
---|---|
ReadOnlyObjectProperty<Throwable> |
exception
発生した例外を表すReadOnlyObjectPropertyを取得します。
|
ObjectProperty<Executor> |
executor
このServiceを実行するために使用する実行者。
|
ReadOnlyStringProperty |
message
メッセージを表すReadOnlyStringPropertyを取得します。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onCancelled
Task状態遷移がCANCELLED状態になるたびにonCancelledイベント・ハンドラが呼び出されます。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onFailed
Task状態遷移がFAILED状態になるたびにonFailedイベント・ハンドラが呼び出されます。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onReady
Task状態遷移がREADY状態になるたびにonReadyイベント・ハンドラが呼び出されます。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onRunning
Task状態遷移がRUNNING状態になるたびにonRunningイベント・ハンドラが呼び出されます。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onScheduled
Task状態遷移がSCHEDULED状態になるたびにonScheduleイベント・ハンドラが呼び出されます。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onSucceeded
Task状態遷移がSUCCEEDED状態になるたびにonSucceededイベント・ハンドラが呼び出されます。
|
ReadOnlyDoubleProperty |
progress
進捗を表すReadOnlyDoublePropertyを取得します。
|
ReadOnlyBooleanProperty |
running
Workerを実行しているかどうかを表すReadOnlyBooleanPropertyを取得します。
|
ReadOnlyObjectProperty<Worker.State> |
state
現在の状態を表すReadOnlyObjectPropertyを取得します。
|
ReadOnlyStringProperty |
title
タイトルを表すReadOnlyStringPropertyを取得します。
|
ReadOnlyDoubleProperty |
totalWork
実行する必要がある最大処理量を表すReadOnlyDoublePropertyを取得します。
|
ReadOnlyObjectProperty<V> |
value
値を表すReadOnlyObjectPropertyを取得します。
|
ReadOnlyDoubleProperty |
workDone
現在の進捗を表すReadOnlyDoublePropertyを取得します。
|
Worker.State
修飾子 | コンストラクタと説明 |
---|---|
protected |
Service()
新しいServiceを作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
<T extends Event> |
addEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
このタスクにイベント・フィルタを登録します。
|
<T extends Event> |
addEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
このタスクにイベント・ハンドラを登録します。
|
EventDispatchChain |
buildEventDispatchChain(EventDispatchChain tail)
このターゲットのイベント・ディスパッチ・チェーンを構築します。
|
boolean |
cancel()
現在実行中のタスクを取り消します(存在する場合)。
|
protected void |
cancelled()
Serviceの状態がCANCELLED状態に遷移するたびに呼び出される、サブクラスのprotectedコンビニエンス・メソッド。
|
protected abstract Task<V> |
createTask()
ServiceがJavaFXアプリケーション・スレッドで起動された後に呼び出されます。
|
ReadOnlyObjectProperty<Throwable> |
exceptionProperty()
発生した例外を表すReadOnlyObjectPropertyを取得します。
|
protected void |
executeTask(Task<V> task)
このServiceに対して定義された
executor を使用して、指定されたタスクを実行します。 |
ObjectProperty<Executor> |
executorProperty()
このServiceを実行するために使用する実行者。
|
protected void |
failed()
Serviceの状態がFAILED状態に遷移するたびに呼び出される、サブクラスのprotectedコンビニエンス・メソッド。
|
protected void |
fireEvent(Event event)
指定されたイベントを起動します。
|
Throwable |
getException()
プロパティexceptionの値を取得します。
|
Executor |
getExecutor()
プロパティexecutorの値を取得します。
|
String |
getMessage()
プロパティmessageの値を取得します。
|
EventHandler<WorkerStateEvent> |
getOnCancelled()
Task状態遷移がCANCELLED状態になるたびにonCancelledイベント・ハンドラが呼び出されます。
|
EventHandler<WorkerStateEvent> |
getOnFailed()
Task状態遷移がFAILED状態になるたびにonFailedイベント・ハンドラが呼び出されます。
|
EventHandler<WorkerStateEvent> |
getOnReady()
Task状態遷移がREADY状態になるたびにonReadyイベント・ハンドラが呼び出されます。
|
EventHandler<WorkerStateEvent> |
getOnRunning()
Task状態遷移がRUNNING状態になるたびにonRunningイベント・ハンドラが呼び出されます。
|
EventHandler<WorkerStateEvent> |
getOnScheduled()
Task状態遷移がSCHEDULED状態になるたびにonScheduleイベント・ハンドラが呼び出されます。
|
EventHandler<WorkerStateEvent> |
getOnSucceeded()
Task状態遷移がSUCCEEDED状態になるたびにonSucceededイベント・ハンドラが呼び出されます。
|
double |
getProgress()
プロパティprogressの値を取得します。
|
Worker.State |
getState()
プロパティstateの値を取得します。
|
String |
getTitle()
プロパティtitleの値を取得します。
|
double |
getTotalWork()
プロパティtotalWorkの値を取得します。
|
V |
getValue()
プロパティvalueの値を取得します。
|
double |
getWorkDone()
プロパティworkDoneの値を取得します。
|
boolean |
isRunning()
プロパティrunningの値を取得します。
|
ReadOnlyStringProperty |
messageProperty()
メッセージを表すReadOnlyStringPropertyを取得します。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onCancelledProperty()
Task状態遷移がCANCELLED状態になるたびにonCancelledイベント・ハンドラが呼び出されます。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onFailedProperty()
Task状態遷移がFAILED状態になるたびにonFailedイベント・ハンドラが呼び出されます。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onReadyProperty()
Task状態遷移がREADY状態になるたびにonReadyイベント・ハンドラが呼び出されます。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onRunningProperty()
Task状態遷移がRUNNING状態になるたびにonRunningイベント・ハンドラが呼び出されます。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onScheduledProperty()
Task状態遷移がSCHEDULED状態になるたびにonScheduleイベント・ハンドラが呼び出されます。
|
ObjectProperty<EventHandler<WorkerStateEvent>> |
onSucceededProperty()
Task状態遷移がSUCCEEDED状態になるたびにonSucceededイベント・ハンドラが呼び出されます。
|
ReadOnlyDoubleProperty |
progressProperty()
進捗を表すReadOnlyDoublePropertyを取得します。
|
protected void |
ready()
Serviceの状態がREADY状態に遷移するたびに呼び出される、サブクラスのprotectedコンビニエンス・メソッド。
|
<T extends Event> |
removeEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
以前に登録したイベント・フィルタをこのタスクから登録解除します。
|
<T extends Event> |
removeEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
以前に登録したイベント・ハンドラをこのタスクから登録解除します。
|
void |
reset()
Serviceをリセットします。
|
void |
restart()
現在実行中のタスクを取り消し(存在する場合)、このServiceを再起動します。
|
protected void |
running()
Serviceの状態がRUNNING状態に遷移するたびに呼び出される、サブクラスのprotectedコンビニエンス・メソッド。
|
ReadOnlyBooleanProperty |
runningProperty()
Workerを実行しているかどうかを表すReadOnlyBooleanPropertyを取得します。
|
protected void |
scheduled()
Serviceの状態がSCHEDULED状態に遷移するたびに呼び出される、protectedコンビニエンス・メソッド。
|
protected <T extends Event> |
setEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
このイベント・タイプに対して使用するハンドラを設定します。
|
void |
setExecutor(Executor value)
プロパティexecutorの値を設定します。
|
void |
setOnCancelled(EventHandler<WorkerStateEvent> value)
Task状態遷移がCANCELLED状態になるたびにonCancelledイベント・ハンドラが呼び出されます。
|
void |
setOnFailed(EventHandler<WorkerStateEvent> value)
Task状態遷移がFAILED状態になるたびにonFailedイベント・ハンドラが呼び出されます。
|
void |
setOnReady(EventHandler<WorkerStateEvent> value)
Task状態遷移がREADY状態になるたびにonReadyイベント・ハンドラが呼び出されます。
|
void |
setOnRunning(EventHandler<WorkerStateEvent> value)
Task状態遷移がRUNNING状態になるたびにonRunningイベント・ハンドラが呼び出されます。
|
void |
setOnScheduled(EventHandler<WorkerStateEvent> value)
Task状態遷移がSCHEDULED状態になるたびにonScheduleイベント・ハンドラが呼び出されます。
|
void |
setOnSucceeded(EventHandler<WorkerStateEvent> value)
Task状態遷移がSUCCEEDED状態になるたびにonSucceededイベント・ハンドラが呼び出されます。
|
void |
start()
このServiceを起動します。
|
ReadOnlyObjectProperty<Worker.State> |
stateProperty()
現在の状態を表すReadOnlyObjectPropertyを取得します。
|
protected void |
succeeded()
Serviceの状態がSUCCEEDED状態に遷移するたびに呼び出される、サブクラスのprotectedコンビニエンス・メソッド。
|
ReadOnlyStringProperty |
titleProperty()
タイトルを表すReadOnlyStringPropertyを取得します。
|
ReadOnlyDoubleProperty |
totalWorkProperty()
実行する必要がある最大処理量を表すReadOnlyDoublePropertyを取得します。
|
ReadOnlyObjectProperty<V> |
valueProperty()
値を表すReadOnlyObjectPropertyを取得します。
|
ReadOnlyDoubleProperty |
workDoneProperty()
現在の進捗を表すReadOnlyDoublePropertyを取得します。
|
public final ReadOnlyObjectProperty<Worker.State> stateProperty
stateProperty
、インタフェース: Worker<V>
getState()
public final ReadOnlyObjectProperty<V> valueProperty
valueProperty
、インタフェース: Worker<V>
getValue()
public final ReadOnlyObjectProperty<Throwable> exceptionProperty
exceptionProperty
、インタフェース: Worker<V>
getException()
public final ReadOnlyDoubleProperty workDoneProperty
workDoneProperty
、インタフェース: Worker<V>
getWorkDone()
public final ReadOnlyDoubleProperty totalWorkProperty
totalWorkProperty
、インタフェース: Worker<V>
getTotalWork()
public final ReadOnlyDoubleProperty progressProperty
progressProperty
、インタフェース: Worker<V>
getProgress()
public final ReadOnlyBooleanProperty runningProperty
runningProperty
、インタフェース: Worker<V>
isRunning()
public final ReadOnlyStringProperty messageProperty
messageProperty
、インタフェース: Worker<V>
getMessage()
public final ReadOnlyStringProperty titleProperty
titleProperty
、インタフェース: Worker<V>
getTitle()
public final ObjectProperty<Executor> executorProperty
public final ObjectProperty<EventHandler<WorkerStateEvent>> onReadyProperty
getOnReady()
, setOnReady(EventHandler)
public final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduledProperty
getOnScheduled()
, setOnScheduled(EventHandler)
public final ObjectProperty<EventHandler<WorkerStateEvent>> onRunningProperty
getOnRunning()
, setOnRunning(EventHandler)
public final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceededProperty
getOnSucceeded()
, setOnSucceeded(EventHandler)
public final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelledProperty
getOnCancelled()
, setOnCancelled(EventHandler)
public final ObjectProperty<EventHandler<WorkerStateEvent>> onFailedProperty
getOnFailed()
, setOnFailed(EventHandler)
public final Worker.State getState()
public final ReadOnlyObjectProperty<Worker.State> stateProperty()
Worker
stateProperty
、インタフェース: Worker<V>
getState()
public final V getValue()
public final ReadOnlyObjectProperty<V> valueProperty()
Worker
valueProperty
、インタフェース: Worker<V>
getValue()
public final Throwable getException()
getException
、インタフェース: Worker<V>
public final ReadOnlyObjectProperty<Throwable> exceptionProperty()
Worker
exceptionProperty
、インタフェース: Worker<V>
getException()
public final double getWorkDone()
getWorkDone
、インタフェース: Worker<V>
Worker.totalWorkProperty()
, Worker.progressProperty()
public final ReadOnlyDoubleProperty workDoneProperty()
Worker
workDoneProperty
、インタフェース: Worker<V>
getWorkDone()
public final double getTotalWork()
getTotalWork
、インタフェース: Worker<V>
Worker.workDoneProperty()
, Worker.progressProperty()
public final ReadOnlyDoubleProperty totalWorkProperty()
Worker
totalWorkProperty
、インタフェース: Worker<V>
getTotalWork()
public final double getProgress()
getProgress
、インタフェース: Worker<V>
Worker.workDoneProperty()
, Worker.totalWorkProperty()
public final ReadOnlyDoubleProperty progressProperty()
Worker
progressProperty
、インタフェース: Worker<V>
getProgress()
public final boolean isRunning()
public final ReadOnlyBooleanProperty runningProperty()
Worker
runningProperty
、インタフェース: Worker<V>
isRunning()
public final String getMessage()
getMessage
、インタフェース: Worker<V>
public final ReadOnlyStringProperty messageProperty()
Worker
messageProperty
、インタフェース: Worker<V>
getMessage()
public final String getTitle()
public final ReadOnlyStringProperty titleProperty()
Worker
titleProperty
、インタフェース: Worker<V>
getTitle()
public final void setExecutor(Executor value)
public final Executor getExecutor()
public final ObjectProperty<Executor> executorProperty()
public final ObjectProperty<EventHandler<WorkerStateEvent>> onReadyProperty()
getOnReady()
, setOnReady(EventHandler)
public final EventHandler<WorkerStateEvent> getOnReady()
public final void setOnReady(EventHandler<WorkerStateEvent> value)
value
- イベント・ハンドラ(nullにしてクリアすることが可能)protected void ready()
public final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduledProperty()
getOnScheduled()
, setOnScheduled(EventHandler)
public final EventHandler<WorkerStateEvent> getOnScheduled()
public final void setOnScheduled(EventHandler<WorkerStateEvent> value)
value
- イベント・ハンドラ(nullにしてクリアすることが可能)protected void scheduled()
public final ObjectProperty<EventHandler<WorkerStateEvent>> onRunningProperty()
getOnRunning()
, setOnRunning(EventHandler)
public final EventHandler<WorkerStateEvent> getOnRunning()
public final void setOnRunning(EventHandler<WorkerStateEvent> value)
value
- イベント・ハンドラ(nullにしてクリアすることが可能)protected void running()
public final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceededProperty()
getOnSucceeded()
, setOnSucceeded(EventHandler)
public final EventHandler<WorkerStateEvent> getOnSucceeded()
public final void setOnSucceeded(EventHandler<WorkerStateEvent> value)
value
- イベント・ハンドラ(nullにしてクリアすることが可能)protected void succeeded()
public final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelledProperty()
getOnCancelled()
, setOnCancelled(EventHandler)
public final EventHandler<WorkerStateEvent> getOnCancelled()
public final void setOnCancelled(EventHandler<WorkerStateEvent> value)
value
- イベント・ハンドラ(nullにしてクリアすることが可能)protected void cancelled()
public final ObjectProperty<EventHandler<WorkerStateEvent>> onFailedProperty()
getOnFailed()
, setOnFailed(EventHandler)
public final EventHandler<WorkerStateEvent> getOnFailed()
public final void setOnFailed(EventHandler<WorkerStateEvent> value)
value
- イベント・ハンドラ(nullにしてクリアすることが可能)protected void failed()
public boolean cancel()
public void restart()
public void reset()
public void start()
protected void executeTask(Task<V> task)
このServiceに対して定義されたexecutor
を使用して、指定されたタスクを実行します。executor
がnullの場合、このタスクを実行する新しいデーモン・スレッドを作成するデフォルトの実行者が使用されます。
このメソッドは、Service実装による呼出しのみが意図されています。
task
- 実行するnull以外のタスクpublic final <T extends Event> void addEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
T
- ハンドラの特定のイベント・クラスeventType
- ハンドラによって受け取る特定のイベントのタイプeventHandler
- 登録するハンドラNullPointerException
- イベント・タイプまたはハンドラがnullの場合public final <T extends Event> void removeEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
T
- ハンドラの特定のイベント・クラスeventType
- 登録解除する対象のイベント・タイプeventHandler
- 登録解除するハンドラNullPointerException
- イベント・タイプまたはハンドラがnullの場合public final <T extends Event> void addEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
T
- フィルタの特定のイベント・クラスeventType
- フィルタによって受け取る特定のイベントのタイプeventFilter
- 登録するフィルタNullPointerException
- イベント・タイプまたはフィルタがnullの場合public final <T extends Event> void removeEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
T
- フィルタの特定のイベント・クラスeventType
- 登録解除する対象のイベント・タイプeventFilter
- 登録解除するフィルタNullPointerException
- イベント・タイプまたはフィルタがnullの場合protected final <T extends Event> void setEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
T
- ハンドラの特定のイベント・クラスeventType
- 特定のeventHandlerと関連付けるイベント・タイプeventHandler
- 登録するハンドラ、または登録解除する場合はnullNullPointerException
- イベント・タイプがnullの場合protected final void fireEvent(Event event)
このメソッドは、FXユーザー・スレッドで呼び出す必要があります。
event
- 起動するイベントpublic EventDispatchChain buildEventDispatchChain(EventDispatchChain tail)
EventTarget
EventTarget
を対象にしたイベントの処理に関係する可能性があるイベント・ディスパッチャが含まれます。このイベント・ターゲットはチェーンに自動的には追加されないため、これがイベントを処理する場合は、それ自体のEventDispatcher
をチェーンに追加する必要があります。
イベント・ターゲットが階層の一部である場合、そのチェーンは通常、階層のルートからイベント・ターゲットまでの収集されたイベント・ディスパッチャから作成されます。
イベント・ディスパッチ・チェーンは、提供される初期イベント・ディスパッチ・チェーンに対する変更によって構築されます。返されるチェーンでは初期チェーンが最後にある必要があるため、ディスパッチャは初期チェーンの前に追加される必要があります。
呼出し元は、初期チェーンが変更されないままであることや、返される値によって異なるチェーンが参照されることを想定できません。
buildEventDispatchChain
、インタフェース: EventTarget
tail
- 作成元の初期チェーンprotected abstract Task<V> createTask()
protected Task createTask() {
final String url = myService.getUrl();
return new Task<String>() {
protected String call() {
URL u = new URL("http://www.oracle.com");
BufferedReader in = new BufferedReader(
new InputStreamReader(u.openStream()));
String result = in.readLine();
in.close();
return result;
}
}
}
Taskが(匿名クラスではなく)事前定義済クラスである場合、および推奨されるベストプラクティスに従った場合、その状態はそのコンストラクタで完全に提供されるため、Taskを構築する前に状態を保存する必要はありません。
protected Task createTask() {
// This is safe because getUrl is called on the FX Application
// Thread and the FirstLineReaderTasks stores it as an
// immutable property
return new FirstLineReaderTask(myService.getUrl());
}
Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.