`

ThreadLocal<T> 使用

    博客分类:
  • java
 
阅读更多
protected T initialValue()


引用

返回此线程局部变量的当前线程的“初始值”。线程第一次使用 get() 方法访问变量时将调用此方法,但如果线程之前调用了 set(T) 方法,则不会对该线程再调用 initialValue 方法。通常,此方法对每个线程最多调用一次,但如果在调用 get() 后又调用了 remove(),则可能再次调用此方法。
该实现返回 null;如果程序员希望线程局部变量具有 null 以外的值,则必须为 ThreadLocal 创建子类,并重写此方法。通常将使用匿名内部类完成此操作。


static ThreadLocal<String> str = new ThreadLocal<String>(){
		@Override
		public String initialValue(){
			return "";
		}
	};
分享到:
评论

相关推荐

    tls_src.zip_TLS

    `ThreadLocal&lt;T&gt;`提供了一个容器,用于存储类型为T的线程局部变量。创建`ThreadLocal&lt;T&gt;`实例时,会为每个线程分配一个独立的T类型的实例。这样,在多线程环境下,每个线程可以安全地使用自己的数据,而无需担心与...

    ThreadLocal

    - 创建ThreadLocal实例:`ThreadLocal&lt;T&gt; threadLocal = new ThreadLocal&lt;T&gt;()` - 设置线程局部值:`threadLocal.set(value)` - 获取线程局部值:`T value = threadLocal.get()` - 移除线程局部值:`threadLocal...

    中小公司人事管理系统

    private static final ThreadLocal&lt;Session&gt; sessionThread=new ThreadLocal&lt;Session&gt;(); private static final ThreadLocal&lt;Transaction&gt; transactionThread=new ThreadLocal&lt;Transaction&gt;(); private static ...

    深入理解ThreadLocal工作原理及使用示例

    ThreadLocal&lt;T&gt;简介和使用示例 ThreadLocal只有一个无参的构造方法public ThreadLocal(),它的相关方法包括: * public T get():获取当前线程的变量副本 * public void set(T value):设置当前线程的变量副本 * ...

    c# 5.0语法介绍

    `ThreadLocal&lt;T&gt;`类在C# 5.0中引入,用于创建线程局部变量。这意味着每个线程都有自己的变量副本,互不影响。 例如: ```csharp ThreadLocal&lt;int&gt; threadCount = new ThreadLocal&lt;int&gt;(() =&gt; Environment....

    入研究java.lang.ThreadLocal类.docx

    ThreadLocal&lt;String&gt; threadLocal = new ThreadLocal&lt;&gt;(); ``` ##### T get() **用途**:返回当前线程所持有的 ThreadLocal 变量的副本。如果这是线程第一次访问,则会创建并初始化该副本。 **示例代码**: ```...

    swift-ThreadlySwift中类型安全的本地线程存储

    例如,可以使用`ThreadLocal&lt;T&gt;`结构体来定义一个线程局部变量,其中`T`是存储值的类型。 4. **线程生命周期管理**:ThreadlySwift会自动管理线程存储的生命周期。当线程结束时,与该线程相关的所有线程局部存储也...

    ThreadLocal源码分析和使用

    private static ThreadLocal&lt;Integer&gt; seNum=new ThreadLocal&lt;Integer&gt;(){ protected Integer initialValue(){ return 0; } } public Integer getNextNum(){ seNum.set(seNum.get()+1); return seNum.get();...

    Java并发编实践之ThreadLocal变量.doc

    private static ThreadLocal&lt;Integer&gt; seqNum = new ThreadLocal&lt;Integer&gt;() { @Override public Integer initialValue() { return 0; } }; public int getNextNum() { seqNum.set(seqNum.get() + 1); ...

    性能优化总结:CSLA服务端如何使用多线程的解决方案.docx

    在 C# 中,可以使用 `System.Threading.ThreadLocal&lt;T&gt;` 类来实现这一目的。以下是修改示例: ```csharp public class ThreadSafeApplicationContext : ApplicationContext { private readonly ThreadLocal...

    通向架构师的道路(第七天)之漫谈使用ThreadLocal改进你的层次的划分

    private static final ThreadLocal&lt;Connection&gt; connectionHolder = new ThreadLocal&lt;&gt;(); public void serviceMethod() { try (Connection conn = getConnection()) { conn.setAutoCommit(false); ...

    ThreadLocal 线程本地变量 及 源码分析.rar_开发_设计

    - 创建ThreadLocal实例:`ThreadLocal&lt;T&gt; threadLocal = new ThreadLocal&lt;T&gt;();` - 设置线程局部变量:`threadLocal.set(value);` - 获取线程局部变量:`T value = threadLocal.get();` - 移除线程局部变量:`...

    理解threadlocal

    private Map&lt;Thread, T&gt; valueMap = new HashMap&lt;&gt;(); public void set(T newValue) { valueMap.put(Thread.currentThread(), newValue); } public T get() { Thread currentThread = Thread.currentThread...

    C#多线程使用

    - .NET框架提供了一些线程安全的集合类,如`ConcurrentQueue&lt;T&gt;`、`ConcurrentStack&lt;T&gt;`和`ConcurrentDictionary&lt;TKey, TValue&gt;`,它们内部实现了同步机制,可以在多线程环境中安全地使用。 7. **线程池最佳实践**...

    JAVA ThreadLocal类深入

    private static final ThreadLocal&lt;Session&gt; sessionThreadLocal = new ThreadLocal&lt;&gt;(); public static Session getSession() { Session session = sessionThreadLocal.get(); if (session == null) { ...

    C# 中的 多线程 C# 多线程

    使用`ThreadLocal&lt;T&gt;`类可以在每个线程中创建一个独立的变量副本,即使多个线程访问同一个`ThreadLocal&lt;T&gt;`实例,每个线程仍然有自己的变量副本。 9. **线程间通信** C#提供了一些机制,如`AutoResetEvent`、`...

    c#线程参考手册

    - 使用ThreadLocal&lt;T&gt;类可以在同一进程中为每个线程提供独立的变量副本。 - 这使得无需外部同步即可安全地使用局部存储变量。 9. 线程优先级和调度: - 线程优先级可以设置为从最高到最低的几个级别,线程调度器...

    深入理解 Java 之 ThreadLocal 工作原理1

    ThreadLocalMap的实现使用了弱引用(WeakReference&lt;ThreadLocal&lt;?&gt;&gt;)作为key,这是因为即使没有外部引用指向ThreadLocal实例,只要它还在ThreadLocalMap中作为key存在,垃圾收集器就不会回收ThreadLocal实例。然而...

    彻底理解Java 中的ThreadLocal

    在JDK 5.0及更高版本中,ThreadLocal支持泛型,类名改为`ThreadLocal&lt;T&gt;`,方法签名也相应更新为`void set(T value)`、`T get()`以及`T initialValue()`。 ThreadLocal的工作原理是通过一个内部的Map来存储每个线程...

Global site tag (gtag.js) - Google Analytics