java 类中的静态域的初始化和静态代码块的执行只在类加载的时候执行且只执行一次。
仅执行一次,所以这一定是线程安全的,由此引出的在单例设计模式中采用静态内部类中的静态域存储唯一一个实例,既保证了线程安全又保证了懒加载,此技术被称作(initialization on demand holder)。但不在本文讨论范围。
本文旨在验证静态代码块只执行一次,即线程安全。
我需要设计一个类,静态代码块需要执行较长时间,然后在测试方法中以多线程的方式触发此类的加载,然后检验结果,验证线程安全。
本人才疏学浅,如有错误请不吝赐教。
另外请尊重别人的劳动成果,如需转载请注明出处:
http://waitingkkk-163-com.iteye.com/blog/2231416
需要“较长时间加载”的类:
public class SlowInit {
static{
System.out.println(Thread.currentThread().getName() + " class SlowInit begin to init static block");
try{
TimeUn