class ThreadSafeClass extends Thread
{
private static int count = 0;
public synchronized static void increment()
{
count++;
}
public synchronized void decrement()
{
count--;
}
}
上記のクラスがスレッドセーフではない理由を誰かが説明できますか?
synchronized
、静的メソッドでのみ使用する必要があります。そのため、私の意見では、increment
メソッドを削除しても、2つのインスタンス(同じインスタンスを介したアクセスのみが同期されている)が同時にメソッドを呼び出すことができるため、スレッドセーフではありません。
increment
)を取る単一のメソッドがある場合は、スレッドセーフになります。または、ロックオブジェクトを使用した場合。私が言ったように、私はJavaについて知りません-私のコメントはC#の知識に由来します。