去年底我写了单例模式的博客
请见https://blog.csdn.net/qq_39767955/article/details/84310120,
我就以为我对单例模式的理解已经差不多了,却没有想到在几个月的时间里面,又对Java(编程)有了新的思考。
回到主题,设计模式几乎是Java面试官必问的问题之一,而且单例模式又是被回答的最多的模式,一方面是单例模式相对简单,方便手写,另一方面当你回到出单例模式时,就可能跳进了面试官为你精心准备的“圈套”里面。
当然,一般情况下,中小公司对面试着设计模式的要求不多,面试着能随便说出几个,这些模式的作用,写法后,基本就过了。但如果要面大公司,我们还需要下苦功夫啊。现在说说面试官的圈套吧,他可能会让你写一个你觉得最好的单例模式,然后问你为什么要这样写,这样写的好处和它能解决的问题。在这里我写一个比较不错 的 双检锁的单例模式吧。
简单说一下吧,这里面有三个点,volatite;synchronized和.class。其他的在我在第二行的博客里面已经提到过了。想想为什么要这样写。简单的懒汉单例模式在多线程下可能会有线程安全问题,那么会问怎么保证线程安全。从上面提到的三个点,可以问道JMM(Java内存模型),锁,类的实例化和加载过程,等等等等,所以越基础的东西越复杂。如果想具体了解,可以参看这篇博客(如果连最基本的单例模式都不会的,先看第二行的博客)https://www.cnblogs.com/dongyu666/p/6971783.html
我们不禁会问,这里单利模式是怎么来的,有些是教科书上写的,是Java语言专家对Java语言特性的总结,有些呢则是工业界血一般的教训换来的。怎么理解呢,举个例子,当请求增多时,多线程下一些单例模式是不安全 的,就可能出现很多问题。
业务才是检验代码健壮性和安全性的唯一标准,各位加油,共勉。