Kotlin协程会始终在同一线程上运行吗?如果不是,那么我们如何使它与Guice Request Scope语义一起使用?

时间:2019-03-01 01:44:01

标签: kotlin dependency-injection guice coroutine requestscope

请求范围使我们能够在整个请求处理过程中跟踪明智的变量。但是我认为这取决于线程局部变量。我认为使用Kotlin协程将破坏Guice注入请求范围语义。

1 个答案:

答案 0 :(得分:2)

协程并不总是在同一个线程上运行,因此线程局部变量会给您带来麻烦,例如Guice请求范围。

但是可以在协程之间传递线程局部变量:https://github.com/Kotlin/kotlinx.coroutines/blob/master/docs/coroutine-context-and-dispatchers.md#thread-local-data

我不认识Guice,所以不知道是否有将ThreadContextElement集成到此框架中的方法。

另请参阅:How to use code that relies on ThreadLocal with Kotlin coroutines