スレッドセーフなプロジェクトのプログラミング時に、どのフィールドをスレッドセーフにするかを決定する方法。たとえば、マルチスレッドプロジェクトでは、TestThreadSafeというプロジェクト内にクラスがあります。スレッドセーフなインスタンスフィールド
public class TestThreadSafe {
public AtomicLong pCounter = new AtomicLong();
public AtomicLong mCounter = new AtomicLong();
protected final ConcurrentMap<K, V> Map = new ConcurrentHashMap<K, V>();
private ScheduledExecutorService ses;
private String dir;
}
ここで、最終フィールドまたは揮発性フィールドとしてsesとdirを定義しないのはなぜですか?
これらのフィールドの使用方法はわかりません。それらがマルチスレッドコンテキストで使用されない場合、volatileは必要ありません。参照を変更しない場合は、finalは必要ありません。 –
TestThreadSafeはマルチスレッドコンテキストで使用されます – lawrence