java – ThreadLocal;是不是每次创建变量的副本都一样?
发布时间:2020-12-15 04:50:51 所属栏目:Java 来源:网络整理
导读:我仍然对ThreadLocal的概念感到困惑.我已经阅读了 JavaDoc以及其他相关问题,但是使用的术语并没有对我有多大帮助. 我有点了解ThreadLocal,也就是说,每个线程都有自己的变量副本.那么……这怎么会让它与…每次构建新变量有所不同? 例如,使用DateFormatter作
我仍然对ThreadLocal的概念感到困惑.我已经阅读了
JavaDoc以及其他相关问题,但是使用的术语并没有对我有多大帮助.
我有点了解ThreadLocal,也就是说,每个线程都有自己的变量副本.那么……这怎么会让它与…每次构建新变量有所不同? 例如,使用DateFormatter作为示例: public void convertDate(String date) { // Contruct new date formatter for every invocation of the method. DateFormatter df = new SimpleDateFormatter(...); .... } public void convertDate(String date) { // Getting date formatter from threadlocal. DateFormatter df = threadLocal.get(); .... } 如果第二个所做的只是返回变量的新副本,第一个与第二个有什么不同? 谢谢. 解决方法
ThreadLocal对象通常是静态的,这意味着它们在同一线程内的函数调用之间保留它们的值.
在第一个代码片段中,每次调用convertDate时,都会创建一个新的SimpleDateFormatter对象.在第二个片段中,每个线程创建一个SimpleDateFormatter对象.每次在同一个线程中调用convertDate时,get()方法都会返回相同的对象. ThreadLocal对象在实现thread-local storage时很有用,这意味着为每个线程维护单独的变量实例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java 随机生成中文姓名,手机号,邮编,住址
- java – 错误:无法初始化模块TreeWalker – 无法实例化JUn
- java – 在有限区域的中央位置附近随机“走”
- public static void main(String[] args) 是什么意思?
- Javamail在公??司中使用outlook
- java – Hibernate – 实体经理工厂
- java – 在getClass()文档中,“被调用的表达式的静态类型的
- java – 屏幕右下角的位置
- java – TimeZone.getTimeZone(“CST”)返回GMT
- java – JPA / Hibernate对Oracle Sequences的增量太多