草庐IT

ThreadLocals

全部标签

java - 关于使用 ThreadLocals 包装可变单例对象的建议

来自JavaConcurrencyinpractice第3.3.3章。线程本地Thread-localvariablesareoftenusedtopreventsharingindesignsbasedonmutableSingletonsorglobalvariables.如果我们将可变的Singleton人包装在ThreadLocal中,每个线程都会有自己的Singleton副本?那么它将如何保持单例?这是作者的意思还是我在这里遗漏了一些非常明显的东西? 最佳答案 IfwewrapthemutableSingletonguyi

java - 如何清理 ThreadLocals

有没有人举例说明如何做到这一点?它们是否由垃圾收集器处理?我正在使用Tomcat6。 最佳答案 javadoc是这样说的:"Eachthreadholdsanimplicitreferencetoitscopyofathread-localvariableaslongasthethreadisaliveandtheThreadLocalinstanceisaccessible;afterathreadgoesaway,allofitscopiesofthread-localinstancesaresubjecttogarbageco

java - 如何清理 ThreadLocals

有没有人举例说明如何做到这一点?它们是否由垃圾收集器处理?我正在使用Tomcat6。 最佳答案 javadoc是这样说的:"Eachthreadholdsanimplicitreferencetoitscopyofathread-localvariableaslongasthethreadisaliveandtheThreadLocalinstanceisaccessible;afterathreadgoesaway,allofitscopiesofthread-localinstancesaresubjecttogarbageco

java - 我应该把我的 ThreadLocals 放在一个 Spring 注入(inject)的单例中吗?

一些人(例如在服务器端http://www.theserverside.com/news/thread.tss?thread_id=41473)建议使用ThreadLocal对象与使用全局变量一样糟糕。我想如果您将它们设为公共(public)静态变量,这是正确的。那么问题是很难判断它在哪里使用,在哪里改变等等。在我的springDItomcatweb-app中,如果我让spring创建一个包含我的ThreadLocal(s)的单例对象,然后将该单例注入(inject)任何需要它的类,它似乎可以解决这个问题。所以我的单例看起来像这样:@ComponentpublicclassUserna

java - 我应该把我的 ThreadLocals 放在一个 Spring 注入(inject)的单例中吗?

一些人(例如在服务器端http://www.theserverside.com/news/thread.tss?thread_id=41473)建议使用ThreadLocal对象与使用全局变量一样糟糕。我想如果您将它们设为公共(public)静态变量,这是正确的。那么问题是很难判断它在哪里使用,在哪里改变等等。在我的springDItomcatweb-app中,如果我让spring创建一个包含我的ThreadLocal(s)的单例对象,然后将该单例注入(inject)任何需要它的类,它似乎可以解决这个问题。所以我的单例看起来像这样:@ComponentpublicclassUserna

java - 是否值得清理 Filter 中的 ThreadLocals 来解决与线程池相关的问题?

简而言之——tomcat使用线程池,所以线程被重用。一些库使用ThreadLocal变量,但不清理它们(使用.remove()),因此实际上它们将“脏”线程返回到池中。Tomcat具有在关闭时检测这些东西并清理线程局部变量的新功能。但这意味着线程在整个执行过程中都是“脏”的。我能做的是实现一个Filter,并在请求完成后(线程返回到池中)立即清除所有ThreadLocal,使用codefromtomcat(那里的方法称为checkThreadLocalsForLeaks)。问题是,值得吗?两个优点:防止内存泄漏防止假设线程“新鲜”的库的不确定行为一个缺点:该解决方案使用反射,因此速度可

python - threadlocals 有什么不好

Django世界中的每个人似乎都讨厌线程本地化(http://code.djangoproject.com/ticket/4280,http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser)。我阅读了Armin关于此的文章(http://lucumr.pocoo.org/2006/7/10/why-i-cant-stand-threadlocal-and-others),但其中大部分取决于threadlocals是不好的,因为它不优雅。我有一个场景,theadlocals将使事情变得更容易。(我有一个应用程序,人们将拥

java - 如何在 Java 中识别和删除从我们的 webapp 发起的 Threads/ThreadLocals?

每当我停止或重新部署web应用时,我都会看到很多类似的错误,msg=Thewebapplication[]createdaThreadLocalwithkeyoftype[](value[])andavalueoftype[](value[])butfailedtoremoveitwhenthewebapplicationwasstopped.Threadsaregoingtoberenewedovertimetotryandavoidprobablememoryleak我没有在我的应用程序中创建任何ThreadLocals,而是引用了许多可能正在创建这些ThreadLocals的库。