2 つの並列計算を実行し、2 番目の計算が終了したら最初の計算を中断する必要があります。現在、標準の Java スレッドを使用して実装しています。
/**
* Runs <var>sup</var> in parallel with <var>main</var>.
* Terminate (interrupt) it when <var>main</var> finishes.
*/
def support[R](sup: => Unit, main: => R): R = {
val supThread = new Thread {
override def run = { sup };
}
supThread.start();
try {
main;
} finally {
supThread.interrupt();
}
}
Thread
s を明示的に使用せずに、Scala の並行ライブラリを使用して同じ動作を実現できますか?