面试手写-双重检查,搞定了吗?

女爷i 2022-09-14 09:49 258阅读 0赞

双重判断思路:先判断,再加锁,又在判断

  1. public class SingletonDouble {
  2. private static volatile SingletonDouble INSTANCE = null;
  3. private SingletonDouble(){ }
  4. public static SingletonDouble getInstance() {
  5. // 第一次判断为空,则上锁;如果不为空,那么就直接return INSTANCE
  6. if (null == INSTANCE) {
  7. synchronized (SingletonDouble.class) {
  8. // 第二次判断为空,则初始化
  9. if (null == INSTANCE) {
  10. try {
  11. } catch (Exception e) {
  12. e.printStackTrace();
  13. }
  14. INSTANCE = new SingletonDouble();
  15. }
  16. }
  17. }
  18. return INSTANCE;
  19. }
  20. //测试的不用管
  21. public static void main(String[] args) {
  22. for (int i = 0; i < 100; i++) {
  23. new Thread(() -> {
  24. System.out.println(SingletonDouble.getInstance().hashCode());
  25. }).start();
  26. }
  27. }
  28. }

更多文章已经被GitHub收录以及电子书等资料:https://github.com/niutongg/JavaLeague
部分截图如下:
请添加图片描述

发表评论

表情:
评论列表 (有 0 条评论,258人围观)

还没有评论,来说两句吧...

相关阅读

    相关 面试时,你会源码

    如今前端工程师的技术要求越来越高,会使用常见的API已经不能满足现如今前端日益快速发展的脚步。现在中大厂基本都会要求面试者手写前端常见API的原理,以此来证明你对该知识点的理解