V
- 线程局部变量的类型
public class FastThreadLocal<V>
extends java.lang.Object
ThreadLocal
从访问时产生更高的访问性能FastThreadLocalThread
。
在内部, FastThreadLocal
在数组中使用一个常量索引,而不是使用散列码和散列表来查找变量。 虽然看起来非常微妙,但与使用散列表相比,它的性能稍有优势,并且在频繁访问时非常有用。
要利用此线程局部变量,您的线程必须是FastThreadLocalThread
或其子类型。 默认情况下,由于这个原因,由DefaultThreadFactory
创建的所有线程都是FastThreadLocalThread
。
请注意,快速路径只能在扩展FastThreadLocalThread
的线程上使用 ,因为它需要一个专门的字段来存储必要的状态。 任何其他类型的线程访问都会返回到常规ThreadLocal
。
ThreadLocal
Constructor and Description |
---|
FastThreadLocal() |
Modifier and Type | Method and Description |
---|---|
static void |
destroy()
销毁保留所有 FastThreadLocal 变量从非FastThreadLocalThread 访问的数据结构。
|
V |
get()
返回当前线程的当前值
|
V |
get(io.netty.util.internal.InternalThreadLocalMap threadLocalMap)
返回指定线程本地映射的当前值。
|
protected V |
initialValue()
返回此线程局部变量的初始值。
|
boolean |
isSet()
当且仅当此线程局部变量已设置时才返回
true 。
|
boolean |
isSet(io.netty.util.internal.InternalThreadLocalMap threadLocalMap)
当且仅当此线程局部变量已设置时才返回
true 。
|
protected void |
onRemoval(V value)
当此线程局部变量被
remove() 删除时调用。
|
void |
remove()
将该值设置为未初始化;
继续调用get()将触发对initialValue()的调用。
|
void |
remove(io.netty.util.internal.InternalThreadLocalMap threadLocalMap)
将该值设置为对指定的线程本地映射未初始化;
继续调用get()将触发对initialValue()的调用。
|
static void |
removeAll()
删除绑定到当前线程的所有 FastThreadLocal 变量。
|
void |
set(io.netty.util.internal.InternalThreadLocalMap threadLocalMap, V value)
设置指定的线程本地地图的值。
|
void |
set(V value)
设置当前线程的值。
|
static int |
size()
返回绑定到当前线程的线程局部变量的数量。
|
public static void removeAll()
FastThreadLocal
变量。
当您处于容器环境中时,此操作很有用,并且您不希望将线程局部变量留在您不管理的线程中。
public static int size()
public static void destroy()
FastThreadLocal
变量从非FastThreadLocalThread
访问的数据结构。
当您处于容器环境中时,此操作很有用,并且您不希望将线程局部变量留在您不管理的线程中。
当您的应用程序从容器中卸载时调用此方法。
public final V get()
public final V get(io.netty.util.internal.InternalThreadLocalMap threadLocalMap)
public final void set(V value)
public final void set(io.netty.util.internal.InternalThreadLocalMap threadLocalMap, V value)
public final boolean isSet()
true
。
public final boolean isSet(io.netty.util.internal.InternalThreadLocalMap threadLocalMap)
true
。
指定的线程本地映射必须针对当前线程。
public final void remove()
public final void remove(io.netty.util.internal.InternalThreadLocalMap threadLocalMap)
protected V initialValue() throws java.lang.Exception
java.lang.Exception
Copyright © 2008–2018 The Netty Project. All rights reserved.