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

.NET 4.0在线程方面加入了很多东西,其中就包括ThreadLocal<T>类型,他的出现更大的简化了TLS的操作。ThreadLocal<T>类型和Lazy<T>惊人相似,构造函数参数是Func<T>用来创建对象(当然也可以理解成对象的默认值),然后用Value属性来得到或者设置这个对象。

ThreadLocal的操作或多或少有点像上面的未命名的LocalDataStoreSlot,但ThreadLocal感觉更简洁更好理解。

代码:

static ThreadLocal<string> local;

static void Main()

{

//创建ThreadLocal并提供默认值

local = new ThreadLocal<string>(() => "hehe");

//修改TLS的线程

Thread th = new Thread(() =>

{

local.Value = "Mgen";

Display();

});

th.Start();

th.Join();

Display();

}

//显示TLS中数据值

static void Display()

{

Console.WriteLine("{0} {1}", Thread.CurrentThread.ManagedThreadId, local.Value);

}

输出:

3 Mgen

1 hehe
//用于随机函数中的线程安全
private static readonly ThreadLocal<Random> appRandom = new ThreadLocal<Random>(() => new Random()); public static int GetRandomNumber()
{
return appRandom.Value.Next();
}
 

最新文章

  1. 常用的js正则表达式
  2. 初始angular框架(1)
  3. PHP Problem with the SSL CA cert (path? access rights?)
  4. eclipse搭建servlet项目
  5. 编程:什么是REST
  6. 問題排查:F5啟動偵錯後所提示的錯誤 (2)
  7. Android View 如何绘制
  8. spring 小结
  9. AutoLayout +Masonary
  10. 图片流量节省大杀器:基于CDN的sharpP自适应图片技术实践
  11. Eclipse常用功能
  12. Selenium 中使用方法小结
  13. Cisco(思科)路由器静态路由的配置
  14. django连接已有的数据库
  15. 【LeetCode】Path Sum 2 --java 二叉数 深度遍历,保存路径
  16. python2.7_1.13_编写一个SNTP客户端
  17. html和html5学习
  18. HAproxy部署配置
  19. java传值与传引用总结
  20. mysql将字符串转化为数字

热门文章

  1. 随机数 while循环 do while循环 for循环
  2. asp.net定时任务
  3. mount error(12): Cannot allocate memory解决办法
  4. JavaScript-Tool:pluload
  5. Cypress USB3014 C++DLL 导入问题
  6. jquery.html5uploader.js 上传控件
  7. NASA的CTO——开源软件使我们诚实
  8. spring 4.0 JUnit简单的Dao,Service测试
  9. AngularJs(Part 11)--自定义Directive
  10. unreal3对象管理模块分析二