質問するログイン新規登録

回答編集履歴

1

refine

2016/11/23 08:30

投稿

yohhoy
yohhoy

スコア6191

answer CHANGED
@@ -4,7 +4,6 @@
4
4
 
5
5
  - `Count`**クラス自身**を「スレッド・セーフなカウンタ」とする設計では、同クラスを利用するマルチスレッド処理コードでは同期制御を意識しません。この場合、`Count`クラス内部実装にてsynchronizedによる同期制御を行う必要があります。マルチスレッド処理からは安全に`Count`クラスを利用できる点がメリットですが、一般にスレッドセーフ実装では実行時コスト増加(≒処理が遅くなる)を避けられません。
6
6
 
7
- - `Count`クラスを「マルチスレッドを特に考慮しないカウンタ」とする設計では、同クラスをマルチスレッド処理コードから利用する場合、`Count`クラスを**利用する側のコードで**synchronizedによる同期制御を行う必要があります。マルチスレッド処理の必要がないときに無駄な実行コスト増はありませんが、マルチスレッド処理コードを書く側が同期制御の責任を追い出ことになります。
7
+ - `Count`クラスを「マルチスレッドを特に考慮しないカウンタ」とする設計では、同クラスをマルチスレッド処理コードから利用する場合、`Count`クラスを**利用する側のコードで**synchronizedによる同期制御を行う必要があります。マルチスレッド処理の必要がないときに無駄な実行コスト増はありませんが、マルチスレッド処理が必要な時には利用者側に同期制御の責任を付けることになります(≒使う側が間違うとアウト)
8
8
 
9
-
10
9
  `Count`クラス設計においてどちらを選択するかはクラス提供者の判断であり、synchronizedはその設計に合わせて適切に利用する必要があります。