我们可以像获取 ThreadLocal 那样获取对 Thread 成员变量的引用吗?
例如,假设我们使用计数器变量来计数 ThreadLocal 变量中线程处理的请求数量。考虑我们正在使用线程池执行器来重用线程。现在,每个线程都保留对 ThreadLocal 计数器变量的引用,并且可以在每次请求后增加自己的副本。 以类似的方式,如果我在 Runnable 中有一个成员变量,我可以取回对它的引用吗?线程无论如何都会被重用。
最佳答案
if i have a Member variable inside a Runnable, can i get back a reference to it?
当您说“Runnable”时,您正在谈论一些实现Runnable
接口(interface)的对象。 Runnable
没有什么神奇之处,run()
方法也没有什么神奇之处。
Runnable
对象的成员变量就像任何其他对象的成员变量一样,您的代码以相同的方式访问它们。
P.S.,通常,当你在程序中看到ThreadLocal
时,这意味着
- 该程序曾经是单线程的,
- 它将许多状态保存在
静态
变量中, - 有人事后才添加了多线程,并且
- 为每个线程复制一些静态状态是有意义的。
我几乎不会在新程序中使用ThreadLocal
,因为我努力不编写任何依赖于静态变量的代码,并且如果您使用ThreadLocal
对于非静态数据,您可能使程序变得比需要的更加复杂。
关于java - Java 线程中的 ThreadLocal 与成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42289546/