ThreadLocal 为线程绑定对象

来源:互联网 发布:nginx 跳转 url不变 编辑:程序博客网 时间:2024/05/16 06:35

java.lang.ThreadLocal<T>

类,对它的调用在不同线程中有不同的结果。

1.使用场景

有些类不是线程安全的,若想在多线程下使用,我们可以为每个线程绑定一个此类的对象。

2.常用方法

T java.lang.ThreadLocal.get()
返回当前线程所持有的对象。
void java.lang.ThreadLocal.set(T value)
设置当前线程所持有的对象。
void java.lang.ThreadLocal.remove()
移除当前线程所持有的对象。

3.例子

可见:线程安全

4.原理浅析

第一段,个人发挥。
第二段,摘自jdk。


5.知名框架如何用

springmvc就在用。
package org.springframework.web.context.request;/** * Holder class to expose the web request in the form of a thread-bound * {@link RequestAttributes} object  * ... */public abstract class RequestContextHolder  {private static final ThreadLocal<RequestAttributes> requestAttributesHolder;/*other fields and functions*/}


0 0
原创粉丝点击