• 多线程资源隔离之ThreadLocal


    上篇讲到多线程线程安全问题的解决思路,这篇将详细讲解资源隔离ThreadLocal的实践。

            ThreadLocal也叫线程局部变量,类似Map结构,以当前线程为key。既然是以资源隔离的思想保证线程安全,那么保存到每个线程的对象就应该是一个副本,切记这样的对象不能是单例,如果非要使用单例创建对象,保存到每个线程的必须是单例对象的克隆对象。


    图片发自简书App

          下面演示一个实例来实践ThreadLocal:


    图片发自简书App

    图片发自简书App

    图片发自简书App

    图片发自简书App

            通过这个实践,可以看到,使用ThreadLocal使各个线程拥有对象的副本,各个线程对副本的修改不会影响到别的线程的副本,从而避免了线程安全问题。

            再次强调,使用单例创建的对象,保存到ThreadLocal,一定要克隆对象。对象其实就是索引,单例,只有一个对象,一个索引,多线程操作依然有线程安全问题,数据会被篡改。切记切记。

  • 相关阅读:
    要学习TINY框架要有什么前提条件?
    如何获取最新的代码?
    python 反射的用法
    面试题1
    Process多进程的创建方法
    异常捕捉
    用type动态创建Form
    ModelForm的使用
    git 常见命令
    TVTK库的安装
  • 原文地址:https://www.cnblogs.com/dushenzi/p/9368673.html
Copyright © 2020-2023  润新知