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
网友评论