這幾天開始準備準備充實一下自己.看threalocal的時候.
發(fā)現(xiàn)除了InheritableThreadLocal這個用來在父子線程之間傳遞變量的子類之外
還有一個對外開放的子類就是TerminatingThreadLocal.
這個玩意我看了一下jdk里自己的使用發(fā)現(xiàn)是在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;
? ? ? ? ? ? ? ? }
}
}
}
};
結(jié)合TerminatingThreadLocal 這個類的注釋說明.發(fā)現(xiàn)這個東西就是一個線程退出時候的回調(diào).就是說一個線程終止了.你希望在終止的時候干些事情
就用這個變量可以做到.
觸發(fā)條件就在Thread的exit方法里
以個人淺薄的認識啊.除了這種操作堆外內(nèi)存的場景需要自己去處理內(nèi)存以外.剩下的反正也就等jvm gc的時候它就會自己回收掉了把...