这几天开始准备准备充实一下自己.看threalocal的时候.
发现除了InheritableThreadLocal这个用来在父子线程之间传递变量的子类之外
还有一个对外开放的子类就是TerminatingThreadLocal.
这个玩意我看了一下jdk里自己的使用发现是在NativeBuffers里有这段.
private static ThreadLocalthreadLocal =new TerminatingThreadLocal() {
protected void threadTerminated(NativeBuffer[] buffers) {
if (buffers !=null) {
for(int i =0; i <3; ++i) {
NativeBuffer buffer = buffers[i];
if (buffer !=null) {
buffer.free();
buffers[i] =null;
}
}
}
}
};
结合TerminatingThreadLocal 这个类的注释说明.发现这个东西就是一个线程退出时候的回调.就是说一个线程终止了.你希望在终止的时候干些事情
就用这个变量可以做到.
触发条件就在Thread的exit方法里
以个人浅薄的认识啊.除了这种操作堆外内存的场景需要自己去处理内存以外.剩下的反正也就等jvm gc的时候它就会自己回收掉了把...
网友评论