ThreadLocal
使用了ThreadLocal之后,当前线程修改的值不会影响其他线程中该变量的值,也就是说这部分数据只会存在线程的独占区中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
public class {
static ThreadLocal<Integer> threadLocal = new ThreadLocal<>();
public static void main(String[] args) { new Thread(() -> { try { TimeUnit.SECONDS.sleep(2L); System.out.println(threadLocal.get()); } catch (InterruptedException e) { e.printStackTrace(); } }, "c2").start();
new Thread(() -> { try { TimeUnit.SECONDS.sleep(1L); threadLocal.set(10); } catch (InterruptedException e) { e.printStackTrace(); } }, "c1").start(); } }
|
这里虽然线程c1修改了threadlocal的值,但是c2线程获取到的还是null。
ThreadLocal的内存泄漏问题
近期评论