有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java播放Http。上下文实现

有人知道如何使用Http吗。上下文current()实现了吗?这是一种静态方法,我在非静态方法、非控制器方法和非单线程应用程序中使用它,它非常有效。我在问自己。。。怎么做

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


共 (1) 个答案

  1. # 1 楼答案

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

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

    如果你开始使用自己的线程池,并在上面做一些事情,尽管你可能会泄露线程之间的上下文,并导致各种奇怪的问题