ScalaのFutureでコールバックをFuture到達前のスレッドで実行する方法
Q&A
Closed
funcX() //ThreadLocalに何か詰め込む
val future = Future { funcY() }
future.onComplete {
case Success() => funcZ(true) //ThreadLocalから何か取得する
case Failure(e) => funcZ(false) //ThreadLocalから何か取得する
}
上記のようなコードで、funcX
とfuncZ
を同一スレッドで実行する方法はありますでしょうか。
スレッドが一つしかないようなExecutionContextを指定すれば可能そうですが、その場合はfuncX/funcZが重い処理の場合にボトルネックになってしまうため、あくまでExecutionContextには複数スレッドが存在する状態で、funcX実行時のスレッドに処理を戻したいのです。
(ThreadLocalなんて使うな、という意見もあるかと思いますが、外部のJavaライブラリのため変更できず。。。)
0