日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单例问题与线程安全

發布時間:2025/3/11 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单例问题与线程安全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

餓漢式

沒有線程安全性問題


懶漢式

public class SingletonDemo2 {private static SingletonDemo2 instance;private SingletonDemo2() {}public static SingletonDemo2 getInstance() {if(instance==null) {instance=new SingletonDemo2();}return instance;}}
如果遇到多線程。上面的代碼會返回不同的?SingletonDemo2 實例。違背了單例設計。

需要加上?synchronized 關鍵字。如下:

public synchronized static SingletonDemo2 getInstance() {if(instance==null) {instance=new SingletonDemo2();}return instance;}雖然解決了 “ 返回不同的? SingletonDemo2 實例”問題,但是在線程很多得時候,性能不好,因為

synchronized 放在靜態方法上,內置鎖就是當前類的Class字節碼對象,當一些偏向鎖,輕量級鎖過來的時候,都會失去它們性能優勢,變成像 重量級鎖一樣。因而還不是最好的方法,需要改進。

最終版本:

public class Singleton2 {private Singleton2() {}//volatile 防止jvm 指令重排序private static volatile Singleton2 instance;public static Singleton2 getInstance(){if(instance==null) {synchronized (Singleton2.class) {if(instance==null) {instance=new Singleton2();}}}return instance;} }

總結

以上是生活随笔為你收集整理的单例问题与线程安全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。