线程封闭

线程封闭

  • 把对象封装在一个线程里,只有这一个线程能看到这个对象,就算这个对象不是线程安全的,也不会出现线程安全的问题了;

实现线程封闭的方法

  • Ad-hoc线程封闭:程序控制实现,最糟糕,忽略;
  • 堆栈封闭
    • 局部变量,无并发问题,多个线程访问一个方法的时候,局部变量都会在每个线程里拷贝一份到线程的栈中,即局部变量是不会被多个线程共享的;
    • 能用局部变量,就不用全局变量(注意不是全局常量);
  • ThreadLocal线程封闭:特别好的封闭方法
    • 每个ThreadLocal中都有一个Map,这个Map是以线程本地对象作为key(ThreadLocal的this),以线程的变量副本作为value,这个Map是由ThreadLocal维护的;
    • ThreadLocal示例,见此文:线程封闭示例 将Request中的信息封闭在ThreadLocal中

你可能感兴趣的:(线程封闭)