gpt4 book ai didi

java - Play Http.Context 实现

转载 作者:行者123 更新时间:2023-12-01 12:35:13 25 4
gpt4 key购买 nike

有谁知道 Http.Context.current() 是如何实现的?这是一个静态方法,我在非静态方法、非 Controller 方法、非单线程应用程序中使用它,并且效果很好。我问自己...如何???

我真的很好奇它的内部工作原理,因为 Play 没有每个请求一个线程的模型,而且他们是如何做到这一点的很有趣。

最佳答案

如果您查看实现,您会发现 current 被保存为 ThreadLocal 值,因此它存储在当前线程中: https://github.com/playframework/playframework/blob/2.3.x/framework/src/play/src/main/java/play/mvc/Http.java

但是如何在可能在其他线程上运行的 Future 中访问它呢?有一个名为 HttpExecutionContext 的特殊执行上下文,它将捕获上下文以使其可用,您可以在此处看到它: https://github.com/playframework/playframework/blob/2.3.x/framework/src/play/src/main/java/play/libs/HttpExecution.java

如果您开始使用自己的线程池并对其进行操作,尽管您可能会泄漏线程之间的上下文并导致各种奇怪的问题。

关于java - Play Http.Context 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25651530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com