たくさんのスレッドを読み取り、いくつかのスレッドを書き込んでいるプリミティブ型の変数を考えてみましょう。次のコードは正しく機能しますか?
もしそうなら、それは1)よりも優れたパフォーマンスを提供しますか?すべてのメソッドで同期を宣言します。2)。明示的なReadWriteLockを使用していますか?
これは一般的なパターンですか?そうでない場合、この状況では通常どのようなパターンが使用されますか?
これは現在私にとっては問題なく機能しますが、揮発性と同期の両方を使用するのは少し冗長だと思います。
private volatile int value = 1;
public void func1()
{
if (value == 1) {
// do something
}
}
public void func2()
{
if (value == 2) {
// do something
}
}
public void func3()
{
if (value == 3) {
// do something
}
}
public synchronized void increase()
{
if (value < 10) value++;
}
public synchronized void decrease()
{
if (value > 0) value--;
}