long次の要件/事実を持つタイプのカウンターが必要です。
- カウンターのインクリメントには、できるだけ時間がかからないようにする必要があります。
- カウンターは1つのスレッドによってのみ書き込まれます。
- カウンターからの読み取りは別のスレッドで行われます。
- カウンターは定期的に(1秒間に数千回も)インクリメントされますが、5秒ごとに1回だけ読み取られます。
- 正確な精度は必須ではありません。カウンターのサイズの大まかなアイデアだけで十分です。
- カウンターがクリアされたり、デクリメントされたりすることはありません。
これらの要件に基づいて、どのようにカウンターを実装することを選択しますか?単純なlongものとして、volatile longまたはを使用してAtomicLong?なんで?
現時点では、私は持ってvolatile longいますが、別のアプローチがより良いかどうか疑問に思っていました。私はまた、++counterとは対照的に行うことによって私の長い時間を増やしていcounter++ます。割り当てが行われていないので、これは本当にもっと効率的ですか(私は他の場所で信じるように導かれています)?