■
- 勉強会でたまたま見つけたリンク
https://www-06.ibm.com/jp/developerworks/java/041112/j_j-jtp10264.html
ではどういう場合にReentrantLockを使うべきなのでしょう。 答えは極めて単純です。synchronizedではできない何か、 たとえばタイム・ロック・ウエイト(timed lock waits)、 割り込み可能ロック・ウエイト(interruptible lock waits)、 非ブロック構造化ロック(non-block-structured locks)、 複数の条件変数、あるいはロック・ポーリング(lock polling)などが、 実際に必要な場合に使えばよいのです。 ReentrantLockにはスケーラビリティの利点もあるので、 高度な競合が見られる状況が実際にあるならば、ReentrantLockを使うべきです。
timed lock waits、interruptible lock waitsとか全然分からん。どこが簡単なのか。。
どうやら有名な並列アルゴリズムらしい。アルゴリズムねぇ。。
https://www-06.ibm.com/jp/developerworks/java/041203/j_j-jtp11234.html
Lock-freeアルゴリズムとwait-freeアルゴリズムについての説明あり。
https://www-06.ibm.com/jp/developerworks/java/060519/j_j-jtp04186.shtml
http://www-06.ibm.com/jp/developerworks/java/060616/j_j-jtp05236.shtml
ちなみに全ての記事を「concurrency in practice」のBrian Goetzが書いてるから読む価値あり。
http://www-06.ibm.com/jp/developerworks/java/040416/j_j-jtp02244.html
http://www-06.ibm.com/jp/developerworks/java/040514/j_j-jtp03304.html
Javaのメモリモデルについて。Brian Goetzはこんなこともやっているのか。。すげーな。
- volatileについて
http://proger.blog10.fc2.com/blog-entry-20.html
組み込み系のプログラミングでも重要らしい。
コンパイラの最適化手法って重要なんだなぁって思った。
- 並列プログラミングの名著らしい。たぶん買うだろうな
Concurrent Programming in Java¿: Design Principles and Patterns (3rd Edition) (Java Series)
- 作者: Doug Lea
- 出版社/メーカー: Addison-Wesley Professional
- 発売日: 2020
- メディア: ペーパーバック
- クリック: 8回
- この商品を含むブログ (2件) を見る