extends Thread 和 implements Runable區別
thread通過繼承Thread實現的類,類內成員變量是線程間不共享的,是否使用threadLocal無區別。因為每次使用這種類時,都是new新的類。Thread t = new extThread();
thread通過重寫runable接口的類,類內成員變量是可以線程間共享的。因為當使用時候類只new了一次。ImplThread it = new ImplThread();Thread t = new Thread(it);
ThreadLocal
可以將類中處于共享內存/主內存的變量,在不同線程中互斥。
原理及內存泄露風險-由于其和thread生命周期同步,key=null而value仍存在,thread結束才會被回收value
Thread中有個成員變量 ThreadLocal.Threadlocalmap類型
Thread.class
該成員變量通過Threadlocal管理賦值,ThreadLocalMap是一個類似hashmap的結構,key為threadlocal實例自身
ThreadLocal$ThreadLocalMap.class