我们可以获取对线程的成员变量的引用,就像我们获取ThreadLocal的方式一样吗?
例如,假设我们使用计数器变量来计算ThreadLocal变量中Thread处理的请求数量。考虑一下我们使用ThreadPool Executer来重用线程。现在每个Thread都保持对ThreadLocal计数器变量的引用,并且它可以在每次请求后递增自己的副本。 以类似的方式,如果我在Runnable中有一个Member变量,我可以找回它的引用吗?线程无论如何都被重用了。
答案 0 :(得分:1)
如果我在Runnable中有一个Member变量,我可以找回它的引用吗?
当你说“a Runnable”时,你谈论的是一些实现Runnable
接口的对象。 Runnable
并没有什么神奇之处,run()
方法没有什么神奇之处。
Runnable
对象的成员变量就像任何其他对象的成员变量一样,并且您的代码以相同的方式访问它们。
P.S。通常,当你在程序中看到ThreadLocal
时,就意味着
static
变量中保留了很多状态,我几乎不会在新程序中使用ThreadLocal
,因为我努力不写任何依赖于静态变量的代码,如果你使用ThreadLocal
作为非静态数据,你可能会让你的程序变得比它需要的更复杂。