2014-02-18 26 views
0

我有當多個線程正在訪問靜態方法,會錯誤地更新數據,Java靜態方法具有一流水平的變量

public class A 
{ 

    private static B b=null; 

    public static B create() 
    { 
     b= new B(); 
     return b; 
    } 

    public static B process() 
    { 
     // doing some processing with b; 
     return b; 
    } 
} 

如果多個線程同時訪問,將b會受到影響?

+0

查看synchronized(),volatile和可能的線程安全的Singleton模式。 –

+0

該代碼甚至不會編譯它的當前形式。 – Voo

回答

0

如果您想要保護該值並確保其正確更新,則應該使該方法同步。

0

不,因爲b存在於對象級別,並且不是靜態可訪問的。

+0

對不起,B也是靜態成員只。我現在更新了代碼。 – user2766609

0

直到我們看到您訪問和使用b的方式後,才能分辨出來。

但是,我能說的一件事是,靜態與否通常不是影響線程安全性的主要因素。