zoukankan      html  css  js  c++  java
  • 基础之ThreadStatic

        public class Bean
        {
            public Bean()
            {
                
            }
            
            public static String Current {
                get {
                    if (guid == null)
                        guid = Guid.NewGuid().ToString();
                    return guid; 
                }
            }
            public static String Current2 {
                get {
                    if (guid2 == null)
                        guid2 = Guid.NewGuid().ToString();
                    return guid2; 
                }
            }
            
            [ThreadStatic]
            public static String guid;
            public static String guid2;
        }
                for (int i = 0; i < 3; i++) {
                    new Thread(() => {
                        Console.WriteLine(Bean.Current.ToString());
                        Console.WriteLine(Bean.Current2.ToString());       
                    }).Start();
                }
    概述:
    标记为 ThreadStaticAttribute 的静态字段不在线程之间共享。
    每个执行线程都有单独的字段实例,并且独立地设置及获取该字段的值。
    如果在不同的线程中访问该字段,则该字段将包含不同的值。
     
    使用场景:
    例如通过 [ThreadStatic] private static string ThreadId; 可以标记一个自己生成的Thread ID,这样这个独立的线程中所的所有事情可以通过这个ID来识别,可以生成这个线程的程序流水作业日志等。
     
    注意:
    建议不要为标记为 ThreadStaticAttribute 的字段指定初始值,因为这样的初始化只会发生一次,因此在类构造函数执行时只会影响一个线程。在不指定初始值的情况下,如果它是值类型,可依赖初始化为其默认值的字段,如果它是引用类型,则可依赖初始化为空引用的字段。

    有追求,才有动力!

    向每一个软件工程师致敬!

    by wujf

    mail:921252375@qq.com

  • 相关阅读:
    访问虚拟机
    w3school JavaScript 简介
    蘑菇街2016研发工程师在线编程题
    乐视2017暑期实习生笔试题(二)
    今日头条2017后端工程师实习生笔试题
    c# 读取 excel文件内容,写入txt文档
    处理字符串
    XML获取节点信息值
    SVN仓库目录结构
    sql 知识点
  • 原文地址:https://www.cnblogs.com/wujf/p/5205737.html
Copyright © 2011-2022 走看看