3

Scala 2.10 Futures + Promises フレームワークを介してスレッドを生成する、作成したさまざまな新しいアプリケーションを使用して JVM がすぐに終了するという問題があります。

たとえば、ブロッキングを使用している場合でも、少なくともデフォルトの実行コンテキストではそうです。

future { blocking { /* work */ }}

非デーモン スレッドは起動されないため、JVM はすぐに終了できると判断します。

ばかげた回避策Threadは、待機中のダミー インスタンスを起動することですが、プロセスが完了したときにこのスレッドが停止することも確認する必要があります。

では、デーモン以外のスレッドで実行するように強制するにはどうすればよいですか?

4

2 に答える 2

4

ExecutionContextに接続されているデフォルトを見るExecutionContext.globalと、それは fork join の種類であり、Threadfactory使用する はスレッドを に設定しdaemonます。これを回避したい場合は、ExecutionContext自分で設定した別の を使用できます。それでも FJP の種類が必要な場合 (そして、おそらく最適なスケーリングを行うため)、このリンクExecutionContextImplを介して彼らが何をしているかを見て、同様のものを作成できるはずです。または、先物が完了する直前にシャットダウンしないように、キャッシュされたスレッドプールを使用するだけです。Executors.newCachedThreadPool

于 2013-05-17T15:26:36.393 に答える