- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个具有默认单例范围的 bean。这个 bean 可以被许多线程访问,我希望学生对象特定于每个线程。我正在使用 Spring Boot 并休息
在这样的实现中,singleton bean如何处理不同线程设置的student对象。 spring 是否向每个线程返回相同的 A 对象,但为学生变量自定义对象值?
@Service
class A{
private InheritableThreadLocal<Student> student;
}
最佳答案
Spring 将仅创建一个 class A
的实例对象(我们称之为 objA
),并且线程局部变量将驻留在该对象中。请注意,Spring 不会将 objA 返回给任何线程,但线程会执行 objA 内或与 objA 关联的逻辑。
但是,Threadlocal 变量值仅对执行逻辑的线程可见。在这种情况下,即使只有一个 class A
的对象实例 (objA
),每个执行线程也将拥有自己的线程局部变量 student
值> 根据 ThreadLocal javadoc,
These variables differ from their normal counterparts in that each thread that accesses one (via its {@code get} or {@code set} method) has its own, independently initialized copy of the variable
请注意,在这里您使用了 InheritableThreadLocal
并根据其 java 文档
This class extends ThreadLocal to provide inheritance of values from parent thread to child thread: when a child thread is created, the child receives initial values for all inheritable thread-local variables for which the parent has values.
因此,如果您在父线程中设置线程本地值,则子线程中也将使用相同的值。不过,您可以在子线程中修改线程本地值,但不会影响父线程的线程本地值。
使用线程局部变量时要小心。如果您使用线程池,则必须在正确的时间清理线程局部变量。否则会发生线程局部泄漏。
关于java - 具有 ThreadLocal 变量行为的单例 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47498878/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!