基本的に、次のスニペットがあります。
(let [task (FutureTask. fn)
thr (Thread. task)]
(.start thr)
;;wait for signal...
(.cancel task true)
(.stop thr))
問題は時々キャンセルが機能しないことです.AFAICTキャンセルが原因で例外がスローされますが、コードの一部がそれをキャッチしますか? 将来のタスクをキャンセルする確実な方法はありますか?
fn は、基本的に一連の長時間実行される計算を実行する関数であるため、ブール値フラグのチェックをループすることはできません。