Java基礎之關於幾種單例實現的思考

方案1:利用CAS原子性實現單例   該實現方案存在問題:假設線程1獲得鎖將0置爲1,還未創建對象但是CPU時間耗盡,此時線程2無法獲取鎖直接返回null。根本原因是:原子變量只能保證CAS操作是原子性的,但是後面的代碼塊無法保證。 方案2:使用雙重鎖檢查實現單例   synchronized特點是每次只允許單個線程進入,其它線程阻塞直到佔有鎖的線程執行完語句塊中的語句,這樣做的好處是阻塞線程會等
相關文章
相關標籤/搜索