java 静态代码块只在类加载时执行一次

该博客探讨了Java中静态代码块的执行特性,只在类加载时执行一次,确保线程安全。通过设计一个模拟长时间加载的类,并使用多线程测试,验证了在类加载过程中其他线程会被阻塞,证实静态代码块的线程安全性质。文中提到了静态内部类在单例模式中的应用,但主要焦点在于验证静态代码块的执行行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值