摘要: 编译器在编译的时候,会事先分析所需要的静态字段,如果这些静态字段所在的类有静态的构造函数,则忽略静态字段的初始化,否则先进行静态字段的初始化。对类的静态成员初始化的顺序取决于在Main函数中的引用顺序,先引用到的先进行初始化,但如果类的静态成员的初始化依赖于其它类的静态成员,则会先初始化被依赖类的静态成员。而带有静态构造函数的类的静态字段,只有在引用到的时候才进行初始化。接下来,用实例来对以上的一段总结性的描述逐句分析:1、编译器在编译的时候,会事先分析所需要的静态字段,如果这些静态字段所在的类有静态的构造函数,则忽略静态字段的初始化,否则先进行静态字段的初始化。 ==无静态构造函数... 阅读全文
posted @ 2013-08-22 23:11 武沛齐 阅读(1221) 评论(0) 推荐(0) 编辑
摘要: MSDN上说: volatile关键字指示一个字段可以由多个同时执行的线程修改。声明为volatile的字段不受编译器优化的限制。这样可以确保该字段在任何时间呈现的都是最新的值。 volatile关键字可应用于以下类型的字段:引用类型。指针类型(在不安全的上下文中)。请注意,虽然指针本身可以是可变的,但是它指向的对象不能是可变的。换句话说,您无法声明“指向可变对象的指针”。类型,如 sbyte、byte、short、ushort、int、uint、char、float 和 bool。具有以下基类型之一的枚举类型:byte、sbyte、short、ushort、int 或 uint。已知为引.. 阅读全文
posted @ 2013-08-22 22:45 武沛齐 阅读(696) 评论(0) 推荐(1) 编辑
摘要: 看了汤姆大叔的一篇博客:别再让面试官问你单例,从中学习了好多的基础知识,包括lock、volatile、静态字段和静态构造函数等好多应该掌握的知识,也认识到本身基础不扎实,谨以此博客来警示自己,且勿好高骛远!!懒汉--用的时候再说 阅读全文
posted @ 2013-08-22 20:42 武沛齐 阅读(814) 评论(0) 推荐(0) 编辑
摘要: lock关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。lock (xxx){ // Critical code section.}lock关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。 如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。用实例说话:例1新建多个线程,用多个线程的操作来模拟实现lock的场景public static void fun(){ Thread[] threads = new Thread[500]; User u = new User(); for (int i = 0;... 阅读全文
posted @ 2013-08-22 20:14 武沛齐 阅读(922) 评论(0) 推荐(0) 编辑