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

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

我什么时候应该使用ThreadLocal变量?

它是怎么用的?


叮当猫咪
浏览 507回答 3
3回答

呼唤远方

许多框架使用ThreadLocals来维护与当前线程相关的上下文。例如,当前事务存储在ThreadLocal中时,您不需要将它作为参数传递到每个方法调用中,以防堆栈中的人需要访问它。Web应用程序可能会将有关当前请求和会话的信息存储在ThreadLocal中,这样应用程序就可以轻松地访问它们。使用Guice,您可以在实现时使用ThreadLocals自定义范围对于注入的对象(Guice的默认值)Servlet作用域最有可能也使用它们)。ThreadLocals是一种全局变量(虽然稍微少了一点,因为它们仅限于一个线程),所以在使用它们时要小心,以避免不必要的副作用和内存泄漏。设计您的API,以便在不再需要线程本地值时始终自动清除它们,并且不可能不正确地使用API(例如像这样)。ThreadLocals可以用来使代码更简洁,在一些罕见的情况下,它们是使某些东西工作的唯一方法(我当前的项目有两个这样的例子;它们被记录在案)。这里在“静态字段和全局变量”下)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java