首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

多线程中Local Store Slot(当地存储槽)

2013-09-14 
多线程中Local Store Slot(本地存储槽)在Java中有一种ThreadLocal机制,为每一个使用该变量的线程都提供一

多线程中Local Store Slot(本地存储槽)

在Java中有一种ThreadLocal机制,为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。从线程的角度看,就好像每一个线程都完全拥有该变量。比如在Hibernate中使用Session的时候,因为Session是线程不安全的,所以要考虑并发问题。而使用ThreadLocal的话,会在每个线程中有一个Session的副本,所以就不会有线程冲突的问题。

.NET中也有相应的机制,来实现变量的线程局部化,而且有多种方法。

1. 使用ThreadStatic特性

ThreadStatic特性是最简单的TLS使用,且只支持静态字段,只需要在字段上标记这个特性就可以了:

static ThreadLocal<int> local = new ThreadLocal<int>(() => 123);static void Main(){    //输出本地线程TLS数据值    Console.WriteLine(local.Value);    //输出另一个线程TLS数据值    ThreadPool.QueueUserWorkItem(_ => Console.WriteLine(local.Value));    //控制台等待线程结束    Console.ReadKey();}
输出:
123
123

热点排行