私にはCallable<String>
があります。私は定期的にScheduledExecutorService.scheduleAtFixedRate()
経由でそれを実行し、呼び出し可能な呼び出しの.call()
呼び出しによって返されたすべての文字列のリストを取得したいと思います。 scheduleAtFixedRate
として、私はこれらの線に沿って私のCallable
をラップするカスタムRunnable
、何かを展開する必要がCallable
(のみRunnable
複数可)を取ることはありません。当然のことながら定期的にCallableをScheduledExecutorService経由で実行しています
final Callable<String> myCallable = ....;
final ConcurrentLinkedQueue<String> results
= new ConcurrentLinkedQueue<String>();
Runnable r = new Runnable() {
@Override public void run() {
try {
results.add(myCallable.call());
} catch (Exception e) {
results.add(null); // Assuming I want to know that an invocation failed
}
}
};
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(r, 0, 1, TimeUnit.SECONDS);
、私は自分のカスタムを展開避けたいのですが(特にマルチスレッドコードの場合)、この種の集約を行うJDKクラスがあるのだろうか?
いいえ、あなたのためのコレクションに呼び出し可能な結果を置くために、JDKの既存のユーティリティはありません。 – jtahlborn
それは私が思ったことです。ありがとう。 –