[解決済み] JavaFXにおけるPlatform.runLaterとTask
質問
この件に関していくつか調べてみたのですが、はっきり言ってまだ非常に混乱しています。
どなたか、具体的な例を教えてください。
Task
を使う場合と
Platform.runLater(Runnable);
? この違いは何ですか?どのような場合にこれらのいずれかを使用するための黄金律があるのでしょうか?
また、私が間違っているならば、これらの2つの"Objects"は、GUIでメインスレッドの内部に別のスレッドを作成する方法(GUIを更新するために使用)ではないのでしょうか。
どのように解決するのですか?
使用方法
Platform.runLater(...)
を使うか
Task
は複雑で大きな操作のために
例 なぜ
Platform.runLater(...)
を使えないのか?
問題:0から100万までカウントしてUIのプログレスバーを更新するだけのバックグラウンドスレッド。
を使用したコード
Platform.runLater(...)
:
final ProgressBar bar = new ProgressBar();
new Thread(new Runnable() {
@Override public void run() {
for (int i = 1; i <= 1000000; i++) {
final int counter = i;
Platform.runLater(new Runnable() {
@Override public void run() {
bar.setProgress(counter / 1000000.0);
}
});
}
}).start();
これはひどいコードの塊で、自然に対する犯罪です(そして、プログラミング全般に対する犯罪でもあります)。 プログラミング一般に対する犯罪です。) まず、見るだけで脳細胞が失われます。 このRunnableの二重ネストを見ているだけで、脳細胞が失われてしまいます。第二に、これは イベント・キューを小さな Runnable でいっぱいにしてしまうことです。 明らかに、私たちはバックグラウンドワーカーを簡単に書くための API が必要でした。 ワーカーを簡単に書くための API が必要でした。
タスクを使ったコード:
Task task = new Task<Void>() {
@Override public Void call() {
static final int max = 1000000;
for (int i = 1; i <= max; i++) {
updateProgress(i, max);
}
return null;
}
};
ProgressBar bar = new ProgressBar();
bar.progressProperty().bind(task.progressProperty());
new Thread(task).start();
前のコードで示されたような欠陥はありません。
参考文献。 JavaFX 2.0でのワーカースレッディング
関連
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
プロジェクトの依存関係を解決できない。
-
無効な文字定数
-
unsigned char* から const jbyte* {aka const signed char*} への変換が無効です。
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
java.sql.SQLException: 結果セットの開始前
-
代入の左辺は変数でなければならない 解答
-
java 365*1000*60*60*24 計算問題
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ