どのように私は排他的な書き込みを達成することができますが、非排他的な読み取りですか?私はsynchronize
セッターにアクセスし、変数volatile
を作ることができますか?これで十分ですか? Java5同時APIでどのように排他的な書き込みを達成するが、非排他的な読み取り?
5
A
答えて
6
ルック:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/locks/ReadWriteLock.html
あなたは、いくつかのスレッドがロックなしで読み書きするときにのみロックできるようにすることができますので、これはあなたの条件を達成します。ここで
読み込むときに同期の伝統を持つこのAPIを比較する興味深い記事:ReentrantReadWriteLock vs synchronized
また、@assyliasはコメントで言ったように、あなたはそれが本当に必要がない場合、ロックを避ける必要があります。
確かに、あなただけのvolatile
キーワードを信頼することができますし、両方の条件が満たされた場合にのみ:
をあなただけの状況の 制限されたセットの下で揮発性の変数の代わりに、ロックを使用することができます。次の基準の両方が、望ましいスレッドセーフティを提供するために揮発性変数に対して を満たす必要があります。
_変数への書き込みは現在の値に依存しません。
_ 変数は、他の変数を持つ不変式には参加しません。
+1
ユースケースによっては、ロックを使用する必要はなく、volatileでも十分です。 – assylias
関連する問題
- 1. SQLクエリ排他読み取り/書き込みテーブル
- 2. javaメソッドの同期と読み取り/書き込みの相互排他
- 3. は排他的
- 4. 相互排他的なチェックボックスロジック
- 5. 排他的iOS UTI
- 6. itemscontrolの相互に排他的なボタン
- 7. linux flock(2)を排他的な排他ロック要求から守るには?
- 8. HDFSファイルのための相互排他書き込み?
- 9. 相互に排他的な注釈
- 10. UIBarButtonItem、排他的なタッチを設定
- 11. Python - オブジェクトの排他的な属性値?
- 12. 相互排他的な引数グループ?
- 13. jQueryセレクター:排他的OR
- 14. 相互に排他的なテーブル列を作成する方法
- 15. 包括的と排他的な違いはありますか?
- 16. MYSQL - 散発的にエラーを取得する排他的なデータベース・アクセス
- 17. 相互に排他的なグループを使用する
- 18. UITableはUITableViewCellで排他的です
- 19. 排他的論理和のJavaコード
- 20. ASP.net + C#.netの相互排他的アクセス
- 21. 排他的なリソースアクセスのHTTPリクエストをロックする
- 22. MACOSXの仮想デスクトップに実行される排他的なプロセス
- 23. Jenkinsで一連のジョブと排他的にジョブを排他的にするにはどうすればよいですか?
- 24. Rexeg月の名前と番号を排他的に組み合わせる
- 25. テスト排他ロック
- 26. ソースセーフ、排他ロックファイル
- 27. NHibernate:排他ロック
- 28. 2つの折りたたみ可能なdivを相互に排他的にする方法
- 29. 排他的ロックを取る正しい方法
- 30. Javascriptでの排他的な項目へのチェック
どのような種類の変数ですか?原子の書き込みが保証されているタイプもあります。 –
これを必要とするコードの例を表示できますか?状況によっては、変数volatileを単にマークすることもできます。 – assylias