为了账号安全,请及时绑定邮箱和手机立即绑定

何时以及如何使用线程局部变量?

何时以及如何使用线程局部变量?

叮当猫咪 2019-07-09 16:08:36
何时以及如何使用线程局部变量?我什么时候应该使用ThreadLocal变量?它是怎么用的?
查看完整描述

3 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

许多框架使用ThreadLocals来维护与当前线程相关的上下文。例如,当前事务存储在ThreadLocal中时,您不需要将它作为参数传递到每个方法调用中,以防堆栈中的人需要访问它。Web应用程序可能会将有关当前请求和会话的信息存储在ThreadLocal中,这样应用程序就可以轻松地访问它们。使用Guice,您可以在实现时使用ThreadLocals自定义范围对于注入的对象(Guice的默认值)Servlet作用域最有可能也使用它们)。

ThreadLocals是一种全局变量(虽然稍微少了一点,因为它们仅限于一个线程),所以在使用它们时要小心,以避免不必要的副作用和内存泄漏。设计您的API,以便在不再需要线程本地值时始终自动清除它们,并且不可能不正确地使用API(例如像这样)。ThreadLocals可以用来使代码更简洁,在一些罕见的情况下,它们是使某些东西工作的唯一方法(我当前的项目有两个这样的例子;它们被记录在案)。这里在“静态字段和全局变量”下)。


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 506 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号