1. 程式人生 > >餓漢式單例模式在多執行緒中併發訪問的解決方案

餓漢式單例模式在多執行緒中併發訪問的解決方案

/**
 * 懶漢式 如果在多執行緒重會出現執行緒安全問題 
 * */
class Sing {

private static Sing sin = null;

private Sing() {}

// 通過同步鎖直接就可以解決執行緒安全問題 這裡屬於的是靜態的所以這裡的
// 鎖為Sing.class位元組碼物件進行的 但是這樣會降低cpu的執行效率
// 解決執行緒安全問題的同時 還能提高cpu執行效率
public static  Sing getInstantce() {
// 當2執行緒進來的時候發現sin已經不再為空直接返回 是不是減少了判斷鎖的次數 提高了cpu的
// 執行效率
if (sin == null) {
// 執行緒1沒有鎖 進不去
synchronized(Sing.class) {
// 這裡會出現執行緒安全問題
// 當執行緒1來到這裡判斷髮現物件不為空直接返回
if (sin == null)
// 執行緒0停止
sin = new Sing();
}
}
return sin;
}
}


class Demo implements Runnable{


@Override
public void run() {
// 這裡就是多執行緒在懶漢式併發訪問的問題解決方案
Sing.getInstantce();
}

}

相關推薦

模式執行併發訪問解決方案

/**  * 懶漢式 如果在多執行緒重會出現執行緒安全問題   * */ class Sing {private static Sing sin = null;private Sing() {}// 通過同步鎖直接就可以解決執行緒安全問題 這裡屬於的是靜態的所以這裡的//

工廠模式

先說一下單例模式,單例模式有兩種,一種時懶漢式(有執行緒安全問題),另一種式餓漢式(無執行緒安全問題)。 懶漢式可以通過加鎖解決安全問題,如下兩端程式碼,第一段式有執行緒安全問題的,一年前lz去面試被要求手寫單例模式的時候就是這樣寫的,被面試官狠狠的鄙視了一波。 package test

手寫(懶漢式,)模式

個人分類:學習筆記 Java 單例模式算是設計模式中最容易理解,也是最容易手寫程式碼的模式了吧。但是其中的坑卻不少,所以也常作為面試題來考。本文主要對幾種單例寫法的整理,並分析其優缺點。很多都是一些老生常談的問題,但如果你不知道如何建立一個執行緒安全的單例,不知道什麼是雙檢鎖,那這篇文章

懶漢式模式模式的區別

1:相同點 1:構造子都是私有,此類不能被繼承 2:不同點 1:餓漢式單例類在自己被載入時就將自己例項化,即便載入器是靜態的,在餓漢式單例類載入時仍會將自己例項化,單從資源利用效率角度來講(比懶漢式單例類稍差些),但是從速度和反應時間角度來講,比懶漢式單例類稍好.

模式(一)模式

    忙於工作,上次更新文章還是幾年前了。趁著離職找工作期間,寫篇文章,總結一下自己用過的設計模式。這篇文章,主要介紹一下單例模式的一種,叫餓漢式單例模式。    餓漢式單例模式的主要特點是:執行緒安全,呼叫效率高,不可延時載入。接下來,通過簡單的Demo介紹下這幾個特點。

1.模式模式

        package singlethon_eager; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * 讀取應用配置檔案(使用餓漢式單例模式) * @aut

模式執行

單例模式的多執行緒         比如使用者點選   程式正在操作這條資料的過程中  然後又有一個人點選  又把這條資料修改了  多執行緒會發生的問題 這時候 當第一個使用者點選後&nbs

模式(懶漢式和)及如何實現執行安全

單例模式有兩種:懶漢式和餓漢式。 1 #include <iostream> 2 3 using namespace std; 4 5 6 // 保證在整個程式執行期間,最多隻能有一個物件例項 7 8 9 // 懶漢式 10 // 1 、建構函式私有化 11

模式和懶漢式

img image bubuko 圖片 bsp 懶漢 餓漢式 單例模式 http 餓漢式單例: 懶漢式單例 單例模式中的餓漢式單例和懶漢式單例

設計模式-模式-和懶漢式

單例模式(Singleton pattern)一個在設計模式中比較簡單的模式,我們常說的餓漢式和懶漢式是最常舉例的兩種寫法。 如下 餓漢式: public class Singleton { private static final Singleton sin

執行安全問題以及提高效率

首先寫個單例: public class SingleDemo { private static SingleDemo s = null; private SingleDemo(){} p

C++的模式執行安全模式(懶漢/

單例模式 單例模式:是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中一個類只有一個例項。即一個類只有一個物件例項。   實現簡單的單例模式:建構函式宣告為private或protect防止被外部函式

java 模式執行安全的模式和懶漢模式

單例模式 解決的問題:保證一個類在記憶體中的物件唯一性. 比如:多程式讀取一個配置檔案時,建議配置檔案封裝成物件。會方便操作其中資料,又要保證多個程式讀到的是同一個配置檔案物件, 就需要該配置檔案物件在記憶體中是唯一的。 如何保證物件唯一性呢? 思想: 1,不讓其他程式建立

JAVA和飽模式及jdkRuntime類的模式實現方式詳解

一、描述 單例模式是一種非常常見的設計模式,即一個類只能有一個物件(例項),一般通過將該類的構造器私有化,來阻止在該類外建立該類的物件,並提供給外界一個唯一的物件(這個物件在該類中建立)。        java中的單例模式常見的有兩種實現方式,一種是惡漢方式,即將該類物件

C# 基礎(十四)C#模式:首先介紹 執行執行、加鎖 模式。然後介紹模式執行同步:執行有序訪問共享記憶體。

一、簡介 本篇文章將介紹如何使用單例模式,也就是類的例項化,在整個專案的生命週期內,只例項化一次。在單例模式中,往往可以看到如SourceCode.cs:這樣的結構的。 SourceCode.cs: public class Singleton { private static

解決執行模式執行不安全問題

DCL雙檢查鎖機制 public class MyConfig { private volatile static MyConfig myConfig = null;//volatile

與懶漢式的C#實現

      為了更好地對單例物件的建立進行控制,此處使用了一種被稱之為雙重檢查鎖定(Double-CheckLocking)的雙重判斷機制。在雙重檢查鎖定中,當例項不存在且同時有兩個執行緒呼叫GetInstance()方法時,它們都可以通過第一重“instance==null”判斷,然後由於lock鎖定機制,

Java 懶漢式

轉載請註明出處:http://blog.csdn.net/mr_liabill/article/details/48374921   來自《LiaBin的部落格》 單例模式很常見,在面試中也會經常直接讓你寫一個單例出來 單例模式寫法一般分為兩種,懶漢式和餓漢式 餓漢式

python模式執行安全問題

看了好多文章都是java實現的,特此寫一篇python的。 這個問題的兩種解決方案: 1.最簡單粗暴的就是在系統中先生成一個單例,就不存線上程安全問題了 2.用雙重同步鎖去實現,一把鎖加外面,一把鎖加里面: class Singleton(object): __instance

模式執行安全

package com.day3; public class SingleTonDemo { public static void main(String[] args) { SinleTonThread sinleTonThread=new SinleTonThread();