0
点赞
收藏
分享

微信扫一扫

关于我喜欢懒汉,而不喜欢饿汉这件事

最不爱吃鱼 2022-04-27 阅读 118
java

单例设计模式,可能很多人已经听到耳朵痛,那到底在单例设计模式上来讲,有我们的饿汉单例和懒汉单例 。 (单例创建的方式比较多 也可以用代码块,枚举类等等)

饿汉单例 随着我们类的加载已经创建好了。(请无视我用拼音标识的饿汉)

懒汉单例 他是在我们需要的时候才进行创建。

这样看来好像懒汉单例比饿汉单例好不少,其实不一定了,我们从多线程的角度去思考思考。如果在这种情况下大家都对饿汉,懒汉进行获取, 饿汉其实没啥事情他属于线程安全,但是懒汉就不一定了我们调用getInstance()方法获取对象,但是恰巧有一个线程进入判断还没有实例化对象,另一个线程也进来了,好像就出事,所以懒汉是线程不安全的。

那这样对比下 我喜欢的懒汉好像又不太好了,就得想下解决的办法(利用同步代码块/同步方法/lock锁 来解决这个问题)

看到这里好像差不多了我用了同步代码块并且给多线程使用了同一把锁,这样他们就不会出现线程不安全问题了,虽然这样确实没啥问题,但是好像效率变低了,一个在创建的时候(仅仅可以创建一次),但是其他线程一直 等待,并且下一个线程进来还会判断,剩下的还会进行等待,这样其实不太好的,所以我再次进行了修改

 这样其实效率就好了点,到后面的线程就会在判断条件未成立直接就return了。

(祝各位技术越来越好,互相帮助,提高技术嘿嘿)

举报

相关推荐

0 条评论