1

「タスクはワンショットクラスであり、再利用することはできません。」JavaFX2のjavadocsから

クラスを再利用できないとはどういう意味ですか?そのインスタンスを作成すれば、確かに何度も使用できます-以下のように?

    Task<Integer> task = new Task<Integer>() { // task example in javadocs
         @Override protected Integer call() throws Exception {
             int iterations;
             for (iterations = 0; iterations < 100000; iterations++) {
                 if (isCancelled()) {
                     break;
                 }
                 System.out.println("Iteration " + iterations);
             }
             return iterations;
         }
     };

for(int i=0; i<5; i++) { // reusing the task 5 times
       Thread th = new Thread(task);
         th.setDaemon(true);
         th.start();
}
4

1 に答える 1

1

それはまさにあなたが考えていることを意味します。Task のインスタンスは、一度だけ使用することを意図しています。これは、実際の実装の制限、またはタスクに配置されたコードが 1 回だけ呼び出されるという保証である可能性があります。その規定を無視できるようになったとしても、そうすべきではないでしょう。

リンクしたドキュメントは、Serviceを再利用可能な Task のようなオブジェクトとして使用する必要があることを示しています。Service には、必要に応じてタスク インスタンスを作成する createTask() メソッドがあるようです。おそらく、Java FX 2 の経験が豊富な人なら、これを拡張できるでしょう。

于 2012-12-04T20:18:23.580 に答える