多线程资源隔离之ThreadLocal

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

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

图片发自简书App

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

图片发自简书App


图片发自简书App


图片发自简书App

图片发自简书App

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java SE 基础: 封装、继承、多态 封装: 概念:就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽...
    Jayden_Cao阅读 6,411评论 0 8
  • 笑是什么?笑是神;生气是什么?生气是鬼。 你一笑,神就来。你一气,鬼就来。神一来,鬼就得走,这叫神出鬼没。...
    珠珠008阅读 1,404评论 0 0
  • 一场暴雨哗哗的下,一间教室中的30个人正奋笔疾书,铃声铃铃的响起来,考试还有十五分钟,…第三场考试的铃声铃铃响起来...
    浅笑安然_a7c5阅读 773评论 0 1
  • 人格分裂 网络与现实版的我 emmmmm 很不一样 今天去见他了 挺开心的 也许这样也不错 为什么一定要做恋人...
    洛小乙阅读 1,339评论 0 0
  • 不知道从什么时候开始,再想写点东西的时候已经不在想的是那些情情爱爱的东西了 这也许是长大成熟或许说我已经老了的标志...
    别萌萌哒阅读 1,417评论 0 0