jjzjj

Threadlocal

全部标签

java - ThreadLocal 是否优于 HttpServletRequest.setAttribute ("key", "value")?

servlet规范(参见我之前的问题)保证同一个线程将执行所有过滤器和关联的Servlet。鉴于此,如果可以选择使用ThreadLocal(假设您已正确清理),我认为使用HttpServletRequest.setAttribute传递数据没有任何用处。我觉得使用ThreadLocal有两个好处:类型安全和更好的性能,因为没有使用字符串键或映射(除了可能通过(非字符串)线程ID进入线程集合)。有人可以确认我是否正确,以便我可以继续放弃setAttribute吗? 最佳答案 IsThreadLocalpreferabletoHttpS

java - ThreadLocal 的使用

java中ThreadLocal的典型用法是什么?什么时候使用它?我无法从这个javadocs获得申请详情文章。 最佳答案 我想说的是,最典型的ThreadLocal用法是当您有一些对象必须在一个流程中的任何地方都可以访问并且您不想在所有层上传递对该对象的引用时。类似于单例模式,但基于线程。示例是数据库连接、hibernatesession等。您在流程开始的某个地方打开它们,在流程结束时提交/关闭并在流程中的任何地方使用。 关于java-ThreadLocal的使用,我们在StackOv

java - 使用 ThreadLocal 进行日期转换

我需要将传入日期字符串格式“20130212”(YYYYMMDD)转换为12/02/2013(DD/MM/YYYY)使用ThreadLocal。我知道一种无需ThreadLocal即可执行此操作的方法。谁能帮帮我?没有ThreadLocal的转换:finalSimpleDateFormatformat2=newSimpleDateFormat("MM/dd/yyyy");finalSimpleDateFormatformat1=newSimpleDateFormat("yyyyMMdd");finalDatedate=format1.parse(tradeDate);finalDate

ThreadLocal :在 Java中隱匿的魔法之力

优质博文:IT-BLOG-CNThreadLocal并不是一个Thread,而是ThreadLocalVariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。ThreadLocal是除了加锁这种同步方式之外的另一种保证多线程访问出现线程不安全的方式。从线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的,ThreadLocal实例就是可访问的;在线程消失之后,其线程局

java - 可以使用 ThreadLocal 来存储请求的 Locale 吗?

我正在对存储在数据库中的相当大的客户端/服务器(HTTP(Hessian)用于通信)应用程序中的用户输入数据进行国际化。用户可以选择他们想要查看的语言,当所请求语言的翻译不存在时,会使用默认语言。目前一个数据类可能是这样的:classMyDataClass{privateLongid;privateStringsomeText;/*gettersandsetters*/}国际化之后它看起来像这样:classMyDataClass{privateLongid;privateSetlocalizedStrings;/*gettersandsetters*/}classLocalizedSt

java - Java中有线程组局部变量吗?

我正在寻找一个类似于ThreadLocal的类,它可以在线程组而不是线程上工作。如果没有这样的类(在某些开源库中),您将如何实现它?有比在WeakHashMap中使用线程组更好的主意吗?我正在使用全局、每线程和每线程组上下文中的各种参数实现一个在运行时可调的调试框架。作为一个非常简单的例子,你可以有一个报告声明:debug.log(category,message);并指定只有当服务于网络请求的线程组中的线程调用时,才会显示具有该特定类别的日志条目。 最佳答案 ThreadGroup很少使用,所以没有平台支持。使用[Weak/Ide

java - 使 Spring bean 的行为类似于 ExecutorService 的 ThreadLocal 实例

在我的网络应用程序中,我有一个后台服务。此服务使用Generator类,该类包含一个Engine类和一个配置为使用多线程并接受GeneratorTasks的ExecutorService。@ComponentpublicclassGenerator{@AutowiredprivateEngineheavyEngine;privateExecutorServiceexec=Executors.newFixedThreadPool(3);//IactuallypassthesingletoninstanceGeneratorclassintothetask.publicvoidsubmit

java - ThreadLocal 与 Runnable 中的局部变量

ThreadLocal和Runnable中的局部变量哪个优先?出于性能原因。我希望使用局部变量能为cpu缓存等提供更多机会。 最佳答案 WhichoneamongThreadLocaloralocalvariableinRunnablewillbepreferred.如果您有一个在线程类(或Runnable)中声明的变量,那么局部变量将起作用,您不需要ThreadLocal。newThread(newRunnable(){//noneedtomakethisathreadlocalbecauseeachthreadalready//

java - ThreadLocal<AtomicInteger> 可能有用吗?

所以我只是sawsomeonetrytouse一个ThreadLocal在一些Java代码中。现在,对于链接代码,这显然是无用的,还有导致请求被拒绝的其他问题。而且它似乎总是没用:AtomicInteger(来自java.util.concurrent.atomic包)专为多线程访问而设计,ThreadLocal使每个线程都有自己的值(value),那么为什么还要使用它呢?我的问题是:是否有任何情况下ThreadLocal会有用吗? 最佳答案 是的,我们可能会想出一个合理的场景:在每个任务开始时,我们需要一个AtomicIntege

多线程系列(七) -ThreadLocal 用法及内存泄露分析

一、简介在Javaweb项目中,想必很多的同学对ThreadLocal这个类并不陌生,它最常用的应用场景就是用来做对象的跨层传递,避免多次传递,打破层次之间的约束。比如下面这个HttpServletRequest参数传递的简单例子!publicclassRequestLocal{/***线程本地变量*/privatestaticThreadLocallocal=newThreadLocal();/***存储请求对象*@paramrequest*/publicstaticvoidset(HttpServletRequestrequest){local.set(request);}/***获取请求