Javaの理論と実践

『Java の理論と実践』のメモのまとめ

ここ最近、『Java の理論と実践』を読んだ時のメモをブログにアップしてきた。 concurrent 関連の記事は一通り読み終わったのでここらで一旦終了にしようと思う。 自分のために一通りをまとめておく。 メモ一覧 『Javaの理論と実践: 安全な構築のテクニック…

『Java の理論と実践: volatile を扱う』を読んで

記事: Javaの理論と実践: volatile を扱う メモ: Java の言語としての同期化機構 synchronized volatile volatile volatile はsynchronized の軽量版 volatile は synchronized より実行時のオーバーヘッドが少ない ただし、synchronized を使ってできるこ…

『Javaの理論と実践: ノンブロッキング・アルゴリズムの紹介』を読んで

記事: Javaの理論と実践: ノンブロッキング・アルゴリズムの紹介 メモ: Java5 でノンブロッキングアルゴリズムの開発が可能になった ノンブロッキングカウンター Atomic 変数を使ったカウンター アトミックで行く の内容とほぼ同じなので省略 ノンブロッキ…

『Javaの理論と実践: アトミックで行く』を読んで

記事:Javaの理論と実践: アトミックで行く メモ: JDK 5.0 でアトミック変数が追加された wait-free, lock-free なアルゴリズムが利用可能になった 以前は native code を使う必要があった スレッドの協調 マルチスレッド環境ではスレッド間の協調が必要 ロ…

『Javaの理論と実践: JDK 5.0における、より柔軟でスケーラブルなロック』を読んで

記事:Javaの理論と実践: JDK 5.0における、より柔軟でスケーラブルなロック メモ: synchronized の特性 原子性(atomicity)と可視性(visibility)を提供 原子性:モニタオブジェクトに保護されたコードを実行できるのは一度に一つだけ 可視性:同じモニ…

『Javaの理論と実践: Javaメモリ・モデルを修正する 第2回』を読んで

記事: Javaの理論と実践: Javaメモリ・モデルを修正する 第2回 メモ: 可視性の問題 すぐに他のスレッドの変更が見えるとは限らない これを保証するのがメモリモデル volatile, synchronized, final のメモリセマンティクスを決定している 同期化ブロックと…

『Javaの理論と実践: Javaメモリ・モデルを修正する 第1回』を読んで

記事: Javaの理論と実践: Javaメモリ・モデルを修正する 第1回 メモ: Java Memory Model の重要性 C/C++ はメモリモデルがなく、アーキテクチャ依存なので他のアーキテクチャでは並行プログラムが動作しない可能性がある Java なら Java がメモリモデルを…

『Javaの理論と実践: スレッド・セーフの特性について』を読んで

スレッド・セーフの特性について 記事: https://www.ibm.com/developerworks/jp/java/library/j-jtp09263/ メモ: スレッドセーフは「all or nothing」の命題ではない クラスの保証するスレッドセーフ性を厳密に文書化するべきである インスタンスメソッド…

『Javaの理論と実践: 優れたHashMapの構築』を読んで間違いを見つけた

優れたHashMapの構築 記事: Javaの理論と実践: 優れたHashMapの構築 メモ: CuncurrentHashMap の実装を見てみる スループットが最適化されている 複数の書き込みロック。ハッシュバケットに対する 32 のロックコレクション。 size() や isEmpty() について…

『Javaの理論と実践: 並行コレクション・クラス』を読んで

並行コレクション・クラス 記事: Javaの理論と実践: 並行コレクション・クラス メモ: Doug Lea 氏の util.concurrent がいけてる Map の歴史 Hashtable: JDK 1.0 登場。同期化された Map。同期化が必要ない場合に遅い。 HashMap と Collections.synchroniz…

『Javaの理論と実践: (若干) シンプルになった並行性』のメモ

(若干) シンプルになった並行性 記事:Javaの理論と実践: (若干) シンプルになった並行性 メモ: ロギング・スケジューリング・キャッシング系のパッケージは再発明されやすい XML パーサ、XSLプロセッサー、PDF ジェネレータは再発明されないのに。。。 「…

『Javaの理論と実践: ファイナル・アンサー?』のメモ

ファイナル・アンサー? 記事: Javaの理論と実践: ファイナル・アンサー? メモ: 様々な final クラスの final:継承禁止 メソッドの final:オーバーライド禁止 フィールドの final:コンストラクタで一度だけ代入可能。その後、変更不可。 Java でクラス…

『Javaの理論と実践: スレッドはどこへ消えた?』のメモ

Javaの理論と実践: スレッドはどこへ消えた? 記事:Javaの理論と実践: スレッドはどこへ消えた? メモ: スレッドがスタックトレースを残さず消える場合がある 単一スレッド環境:例外が発生してコンソールにスタックトレースが出力される マルチスレッド環…

『Javaの理論と実践: スレッド・プールとワーク・キュー』のメモ

スレッド・プールとワーク・キュー 記事:Javaの理論と実践: スレッド・プールとワーク・キュー メモ: サーバーアプリケーションは「処理時間の短いタスク・大量のタスク」を処理することが多い これに対して、スレッドを都度立ち上げるというマルチスレッ…

『Javaの理論と実践: 安全な構築のテクニック』のメモ

最近、再び Java の勉強に時間を使い始めた。 ずいぶんと昔に書かれたものだが Brian Goetz 氏が書いてるシリーズが勉強になりそうなので、毎日 30 分くらいで読んでいる。 IBM developerWorks 日本語版 : Java Technology : 技術文書一覧 今のところ、concu…