ThreadLocal

ThreadLocal的主要作用是让各个线程维持自己的变量。

.Net 4.0 在线程方面加入了很多东西,其中就包括ThreadLocal<T>类型,他的出现更大的简化了TLS操作。ThreadLocal使用场合主要解决多线程中数据因并发产生不一致的问题。ThreadLocal为每个线程中的并发访问的数据提供一个副本,通过访问副本来运行业务,这样的结果是耗费了内存,但大大减少了线程同步所带来的性能消耗,也减少了线程并发控制的复杂度。ThreadLocal不能使用原子类型,只能使用Object类型。ThreadLocal的使用比Synchronized要简单的多。

ThreadLocal和Synchronized(同步)都用于解决多线程并发访问。但是ThreadLocal和Synchronized有本质的区别。Synchronized是利用锁的机制,是变量或者代码块在某一时刻只能被一个线程访问。而ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一对象,这样就隔离了多个线程对数据的数据共享。而Synchronized却正好相反,它用于在多个线程间通信时能够获得数据共享。

Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。

当然ThreadLocal并不能替代Synchronized,他们处理不同的问题域。Synchronized用于实现同步机制,比ThreadLocal更加复杂。

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

推荐阅读更多精彩内容

  • 前言 ThreadLocal很多同学都搞不懂是什么东西,可以用来干嘛。但面试时却又经常问到,所以这次我和大家一起学...
    liangzzz阅读 12,505评论 14 228
  • Android Handler机制系列文章整体内容如下: Android Handler机制1之ThreadAnd...
    隔壁老李头阅读 7,683评论 4 30
  • 难得回一趟老家,八露叫我上他家玩。我不是很想过去,但我不懂得怎样拒绝,所以我还是过去了。 八露是我的初中同学。初中...
    会疼这思念阅读 489评论 6 24
  • 发怒解决不了任何问题 愤怒的人张开嘴,但却闭上眼睛 烹调可以使人放松 只要你看,就一定能看到东西 掩饰一直是愤怒患...
    张绍春阅读 152评论 0 0
  • 2016年5月1号,我在我宿舍楼下偷偷亲了嘟嘟,嗯不抽烟不喝酒的男生的味道真好。 2016年5月3号,我说我要嘟嘟...
    洪阿柒阅读 262评论 1 2