同期を使用すると、パフォーマンスに影響があります。volatile を synchronized と組み合わせて使用して、パフォーマンスのオーバーヘッドを削減できますか? たとえば、Counter のインスタンスは多くのスレッド間で共有され、各スレッドは Counter のパブリック メソッドにアクセスできます。以下のコードでは、volatile が getter に使用され、synchronized が setter に使用されます。
public class Counter
{
private volatile int count;
public Counter()
{
count = 0;
}
public int getCount()
{
return count;
}
public synchronized void increment()
{
++count;
}
}
これが壊れる可能性のあるシナリオを教えてください。