我也在看书的时候 看到C#的静态构造方法 也在想JAVA有没有同样的东西。

先来看一看为什么C#的静态构造方法为什么会存在

我们平常普通的做法是

public class Teacher {private static Teacher mTeacher;private Teacher() {}public static Teacher getInstance() {if (mTeacher == null) {mTeacher = new Teacher();}return mTeacher;}
}

但是,这样做是不能防止多线程同时调用的。

例如,有A线程,B线程同时初始化这个类

判断的时候,都能初始化到该类的对象。这就违背了单例模式的初衷。

所以,改进的方法可以是

public class Student {private static Student mStudent = new Student();private Student() {}public static Student getInstance() {return mStudent;}}

此实例是跟该类在加载的时候就初始化出来了。

这样就有效地防止了多线程下的单例问题

[Java]Java的静态构造函数 多线程下安全的单例模式相关推荐

  1. java+线程安全的hash,多线程下HashMap安全问题-ConcurrentHashMap解析

    Java1.5 引入了 java.util.concurrent 包,其中 Collection 类的实现允许在运行过程中修改集合对象.实际上, Java 的集合框架是[迭代器设计模式]的一个很好的实 ...

  2. java静态构造函数_为什么不允许使用Java静态构造函数?

    java静态构造函数 Java Static Constructor is not allowed, but why? Before we dig into the reasons for not a ...

  3. java多线程下LongAdder、CountDownLatch、CyclicBarrier、Phaser 的用法

    前言 一文读懂java多线程下常用常考的阻塞方法LongAdder.CountDownLatch.CyclicBarrier.Phaser 包含演示代码 高并发模拟,性能比较实例代码 前言 LongA ...

  4. java 构造函数 静态_为什么不允许使用 Java 静态构造函数?

    Java 静态构造函数 假设我们有一个定义为的类: public class Data { private int id; public static Data() {}} 如果您尝试编译此类,则会在 ...

  5. java.text.SimpleDateFormat多线程下的问题

    1. 今天在做性能压测的时候发现java.text.SimpleDateFormat多线程下的错误 2. 先贴出两段错误大家看一下: Exception in thread "pool-1- ...

  6. java 多线程缓存_[Java教程]【JAVA并发编程实战】12、使用condition实现多线程下的有界缓存先进先出队列...

    [Java教程][JAVA并发编程实战]12.使用condition实现多线程下的有界缓存先进先出队列 0 2016-11-29 17:00:10 package cn.study.concurren ...

  7. java类中,成员变量赋值第一个进行,其次是静态构造函数,再次是构造函数

    如题是结论,如果有人问你Java类的成员初始化顺序和初始化块知识就这样回答他.下面是代码: package com.test;public class TestClass{// 成员变量赋值第一个执行 ...

  8. 2019-06-03 Java学习日记之多线程下GUI

    多线程下 单例设计模式: 保证类在内存中只有一个对象 如何保证类在内存中只有一个对象呢? 1.控制类的创建,不让其他类来创建本类的对象 2.在本类中定义一个本类的对象,Singleton s 3.提供 ...

  9. Java多线程下载网图

    Java多线程下载网图案例 此案例依赖--文件操作工具类(FileUtils) 使用 apache 的commons-io包下的FileUtilsimportorg.apache.commons.io ...

最新文章

  1. R语言ggplot2可视化按照因子排序(order of facets)可视化分组多子图(facet、面图)实战
  2. MYSQL密码解密函数的使用
  3. Keras的回调函数
  4. Java8 LinkedHashMap 源码阅读
  5. Ember.js 入门指南——路由重定向
  6. winrar x64 3.93如何破解
  7. fedro1 16 64位安装oracle 11.2.0.1遇到的问题
  8. Extjs图书管理系统源码 智能化图书管理系统源码
  9. 盛大易宝只是陈天桥的梦而已
  10. hello语音为什连接不上服务器,Hello语音交友怎么玩_Hello语音交友打不开
  11. thinkpad s5黑将摄像头最新驱动_第一款以iOS方式运行的安卓手机:联想新机S5黑科技震撼来袭!...
  12. 计算机视觉目标检测算法综述
  13. R语言:lengths计算列表list中元素的个数
  14. 我国历史上各个朝代的都城
  15. WebStorm-2021.1.1下载及安装
  16. ESP32实验-自建web服务器配网01
  17. Linux spi驱动分析----SPI设备驱动(W25Q32BV)
  18. 聚宽JQData说明书
  19. 2022-07-31 零基础吉他入门知识
  20. 第三方支付频频被罚款,市场驱动下或是故意为之?

热门文章

  1. window下修改mysql用户密码
  2. CF817D Imbalanced Array
  3. 【邮件存档】使用Foxmail存档公司局域网邮箱邮件
  4. ElementUI上传图片后,清除缓存
  5. 性格与中医养生10--阴虚体质
  6. 康师傅-java基础-01days
  7. 收藏 | Linux系统日志位置及包含的日志内容介绍
  8. Scheduler模块详解
  9. linux缓冲区溢出攻击步骤,如何防范Linux操作系统下缓冲区溢出攻击
  10. 关于未完全Root的Android系统如何彻底ROOT