双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

【提问】java关键字volatile、双重检查 单例模式的应用

SealedBook SealedBook 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

class MyClass {
private static volatile MyClass myClass = null;

private MyClass() {
}

public static MyClass getInstance() {
if(myClass == null) {
synchronized (MyClass.class) {
if(myClass == null) {
myClass = new MyClass();
}
}
}
return myClass;
}
}

volatile关键字我不太明白在上面代码中的作用,既然已经进行双重检查了,还有必要把myClass声明volatile吗?
求教,谢谢!
...全文

相关推荐

Java线程面试TOP50.pdf

在Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式创建线程比较好(比如:继承thread类还是调用Runnable接口),然后逐渐问到并发问题像在Java并发编程的过程中遇到了什么挑战,Java内存模型。本文总结了java线程常被问到的题目。

shandongwill

面试官的一道简单的单例模式问题给我问懵了,详解单例模式双重检查加锁为什么要加volatile关键字!

目录 1.场景: 2.对象的创建过程  3.指令重排 4.CPU执行时间片  5.指令重排对双重检查加锁模式的影响   1.场景: 面试官:有用过单例模式吗? 我:有有有(自信满满)。 面试官:说说单例模式几种写法? 我:懒汉式和饿汉式,懒汉式巴拉巴拉,饿汉式巴拉巴拉。 面试官:我们都知道synchronized加锁是比较耗费资源的,你这种写法每次访问都需要获得锁(基础的懒汉式写法),效率比较低,有什么优化的方式吗? 我:沉思片刻,脑海灵光一现。可以采用双重检查加锁的方式,巴拉巴拉。(还好之前看到过,暗自庆幸) 面试官:为什么双重检查加锁需要加volatile关键字? 我:要不我们问问度娘?

weixin_38697579

Java双重检查加锁单例模式的详解

今天小编就为大家分享一篇关于Java双重检查加锁单例模式的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

weixin_38514620

Java中的双重检查(Double-Check)详解

主要为大家详细介绍了Java中的双重检查(Double-Check),感兴趣的小伙伴们可以参考一下

weixin_38670391

Java中volatile关键字的作用与用法详解

volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。这篇文章主要介绍了Java中volatile关键字的作用与用法详解的相关资料,需要的朋友可以参考下

weixin_38603704
评论 6
收藏 已收藏
分享
返回顶部
SealedBook
Java SE 62,621 成员 307,251 内容