1

スレッドを使用して Java プログラムを作成しましたが、スレッドが静的メソッドを使用することがあります。問題は、メソッドが一度に 1 回しか実行されないことです。したがって、メソッドが既に実行されている場合は、もう一度開始するのではなく、待ってから再度開始する必要があります。

4

2 に答える 2

3

その静的メソッドを としてマークするだけで、synchronized相互排除が保証されます。2 つのスレッドが同時に実行することはできず、そのうちの 1 つは他のスレッドがメソッドの実行を完了するまで待機する必要があります。

public static synchronized void method() {
    //this part can only be executed by one thread at a time
}

この表記法は、クラスのモニターを操作のロックとして使用することと同じです。つまり、次のようになります。

class YourClass {
    public static void method() {
        synchronized(YourClass.class) {
            //this part can only be executed by one thread at a time
        }
    }
}
于 2013-01-31T17:14:09.007 に答える
0

「言葉」synchronized があなたを助けます

public static synchronized void method() {
....code here 
notify();}
于 2013-01-31T17:17:02.930 に答える