问题标签 [thread-local]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6897 浏览

java - request.getSession() 与 getThreadLocalRequest().getSession()

和有什么区别

我正在维护的应用程序似乎将第一个用于直接 Servlet,第二个用于通过 GWT-RPC 实现的任何东西,该 GWT-RPC 本身扩展了 servlet。

0 投票
2 回答
703 浏览

python - 金字塔 - threadlocal 在 Response 的 app_iter 中不起作用

使用以下示例代码:

我收到当前请求: None。所以,threadlocal里面不工作app_iter?我有实际的代码,我需要访问threadlocal远离视图的几个层,并且传递request变量会很麻烦。

0 投票
1 回答
4018 浏览

multithreading - Spring Security:多个 ThreadLocals 中的相同 SecurityContext-instance,它是如何工作的?

我有一些关于 Spring Security 3.0.5 和 SecurityContext 的问题。首先,我试着总结一下我所知道的:

  • SecurityContextHolder 存储 SecurityContext
  • Request之间,SecurityContext存储在HttpSession中
  • 请求开始:SecurityContextHolder 从 HttpSession 获取 SecurityContext
  • 请求结束:SecurityContextHolder 将 SecurityContext 放入 HttpSession

  • 在请求期间,在服务器上,SecurityContextHolder 使用 ThreadLocal。在应用程序的任何地方(相同的请求),都可以访问 SecurityContext

现在我的问题....

--> 两个请求:SecurityContext-instance 将被共享

这是如何运作的?我的意思是,SecurityContextHolder 对每个请求都使用 ThreadLocal。2 请求 = 2 ThreadLocals

每个请求都会: 从 HttpSession 中获取会话属性 (SecurityContext) 如果它们在 SecurityContext 上工作会发生什么?所有 ThreadLocals 中的 SecurityContext 是否都发生了变化?

据我所知:是的(??)

这是如何运作的?它们如何在同一个实例上工作?我的意思是,我真的无法想象具有两个不同 ThreadLocals 的两个不同线程如何在同一个实例上工作?

API (ThreadLocal):此类提供线程局部变量。这些变量不同于它们的正常对应变量,因为每个访问一个(通过它的 get 或 set 方法)的线程都有它自己的、独立初始化的变量副本。

我的意思是,就是这样:复制!也许我错了,两个线程不可能在同一个SecurityContext上工作?但是 Spring Security 文档是这么说的!

如果有人能向我解释一下就好了:-)谢谢!

0 投票
1 回答
262 浏览

java - ThreadLocal 在匿名迭代器的字段中使用时有奇怪的行为

我有一个内部类,它使用类似于以下的方法实现 Iterable:

奇怪的是(对我来说),在某些情况下,在 baz 中 foo 的值为 null,但 bar 的值为 0(初始化字段时没有空指针异常)。此外,奇怪的是该字段首先为空,因为如果我打印堆栈跟踪,则会调用 ThreadLocal 的 set 方法,该方法使用新构造的 Foo 对象设置其值,但这可能是一个不同的问题.

有谁知道这里会发生什么?

0 投票
3 回答
251 浏览

java - 将 ThreadSafe 对象放在 ThreadLocal 上是否有任何好处?

我最近看到了一段代码,它使用了一个ThreadLocal对象并在其中保留了一个ConcurrentHashMap

这有什么逻辑/好处,还是多余的?

0 投票
1 回答
113 浏览

boost - 每个线程分配一个实例(Boost 环境)

我是 Boost 的新手,我正在重新设计一个必须在线程应用程序中工作的日志记录类。它被设计为像 ostream 对象一样工作,但“没有工作”(用 Eddy Izzard 的声音说,对于那些知道他提到达芬奇直升机的人来说)。

您可以按如下方式使用它:

因此,它最初被设计为单例,经过一些方法后,我认为也许 Logger::instance() 可以返回线程唯一的 Logger。我可能会使用 STL 来定义 Boost Thread ID 和 Logger 类的实例之间的映射。

然后我开始想,也许有一种更聪明的方法可以使用某种形式的线程本地存储来做到这一点?

地图的一个问题是,当线程终止时,我必须进行一些房屋清洁以定期删除 Logger。我开始觉得我在重新发明一些东西。

我看到 Boost 支持线程本地存储。

有什么想法或警告吗?

谢谢,

肯尼

0 投票
6 回答
33870 浏览

java - 将 ThreadLocal 传播到从 ExecutorService 获取的新线程

我正在使用 ExecutorService 和 Future(此处的示例代码)在一个带有超时的单独线程中运行一个进程(线程“生成”发生在 AOP 方面)。

现在,主线程是一个Resteasy请求。Resteasy 使用一个或多个 ThreadLocal 变量来存储一些上下文信息,我需要在我的 Rest 方法调用中的某个时间点检索这些信息。问题是,由于 Resteasy 线程在新线程中运行,因此 ThreadLocal 变量丢失了。

将 Resteasy 使用的任何 ThreadLocal 变量“传播”到新线程的最佳方法是什么?似乎 Resteasy 使用多个 ThreadLocal 变量来跟踪上下文信息,我想“盲目地”将所有信息传输到新线程。

我查看了子类化ThreadPoolExecutor并使用beforeExecute方法将当前线程传递给池,但我找不到将 ThreadLocal 变量传递给池的方法。

有什么建议吗?

谢谢

0 投票
1 回答
4219 浏览

java - 为什么 ThreadLocal 实用程序总是在 Spring MVC 应用程序中返回 null?

我编写了这个实用程序类来在 Spring MVC 应用程序中保存临时数据:

所以我打电话FooUtil.setFooId("foo")

但是当我后来打电话时FooUtil.getFooId(),它总是返回null

我需要构造函数吗?或者也许这不应该是一个抽象类?我不知道。

0 投票
4 回答
2851 浏览

java - 在 Java 中,当 ThreadLocal 对象被修改时,这些变化会在下一个请求中持续存在吗?

在典型的 Web 应用程序中,当请求进入时,过滤器会在 http 会话中查找 Context 对象。如果不存在,它会创建 Context 对象并将其存储在 http 会话中。此外,这个 Context 对象也存储在 ThreadLocal 对象中。沿路径的 Servlet 从 ThreadLocal 检索此 Context 对象并对其进行修改。当返回响应时,过滤器现在将 ThreadLocal 中的 Context 对象清空。那么当用户发出另一个请求时,他能看到修改后的 Context 对象吗?

谢谢夸迪尔

0 投票
3 回答
2889 浏览

clojure - Clojure 中的线程本地计数器

我有一个网络应用程序,我希望能够跟踪在请求(即线程)中调用给定函数的次数。

我知道可以使用 ref 以非线程本地方式进行操作,但是我将如何在本地进行线程处理?