2

「スレッドセーフ」ではない他のクラスやメソッド(サードパーティ)をラップするクラスを作成する必要があります。私は実際にシングルスレッドのクラス/メソッドを作成したいと思っています。

これはそれを行う必要があります:

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つの静的メソッドを持つ1つの静的クラス。したがって、複数のオブジェクトがこのクラスを使用/呼び出している場合。彼らは「インライン」で待たなければなりません。負荷が大きいとパフォーマンスが低下します。

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

1 に答える 1

0

Synchronization環境で必要ですmulti-threaded。複数のスレッドがリソースに同時にアクセスできる場合、リソースへのアクセスが必要synchronizationになる場合があります。

于 2012-12-05T16:52:14.150 に答える