2012-12-05 47 views
2

我需要創建一個類來包裝其他類和方法(第三方),這些類不是「線程安全」的。 我實際上想創建一個單線程類/方法。與被同步1種靜態方法同步方法,何時使用

public class SomeClass { 
    public static synchronized void performTask(int val) { 
     //interesting non-thread safe code... 
     ThisClass thisclass = new ThisClass(); 
     thisclass.dostuff(); 
     ThatClass thatclass = new ThatClass(); 
     thatclass.dootherstuff(); 
     HisClass hisclass = new HisClass(); 
     hisclass.notsure(); 
    } 

1靜態類:

這應該這樣做。 所以如果多個對象使用/調用這個類。他們將不得不等待「在線」。如果負載很重,性能會受影響。

public class MyClass { 
    public void mytask() { 
     //interesting code 
     SomeClass.performTask(myval); // will wait if some other code block is in SomeClass.performTask? 
    } 
+3

你的問題是什麼? – StriplingWarrior

+1

你可能不得不看看這個 http://stackoverflow.com/questions/437620/java-synchronized-methods-lock-on-object-or-class – SmartCoder

+0

所以,如果多個對象正在使用/調用這個類,他們會等待「內聯」,並且如果重負載性能可能會受到影響? – Paul

回答

0

Synchronization需要在multi-threaded環境。當多個線程可以同時訪問您的資源時,您可能需要資源訪問synchronization