2009-03-15から1日間の記事一覧

第五章 (4): シンクロナイザ

シンクロナイザは自身のステートを用いてスレッドのコントロールフローを調停する機能。色々な種類がある。 Latch Latchはゲートみたいなもの。Latchが最終ステートに到達するまでは、全てのスレッドが先に進むのをブロックするが、最終ステートに達すると以…

第五章 (5): キャッシュの実装

あるスレッドAが高価な計算処理Xを計算中の場合に、別のスレッドBがXの計算結果を得たい場合があるとする。この場合、BはAの計算が終わるのを待ち、Xを返すとメモリを節約することが出来る。ところがコレは通常のConcurrentMapを使ったキャッシュでは実現出…

今週のまとめ

まず英語。進捗は芳しくない。7章まで。この調子ではいつ終わるか分からないなぁ。 次にコンピュータ。何となく興味を持って始めたが、意外と面白くて今週はこちらの方が進んだ。第一部完了。段々難易度が高くなってきて、進むのが遅くなってきている。後半…

第五章 (3): スレッドの割り込み

スレッドの割り込みについて。BlockingQueueのputやtakeは、InterruptedExceptionをスローする。例えばtakeの場合は、次の要素が無くてスレッドが待機状態になっている間、別スレッドが割り込みを行うとスローされる。割り込みされたスレッドは、出来るだけ…

第五章 (2): プロデューサ・コンシューマパターン

ProducerとConsumerが互いを意識しなくて良いように、間接的に依存するプールを用いる。BlockingQueueがこのパターンをサポートする。BlockingQueueはスレッドセーフ。 Producerの方が遅ければ, Consumerは待つだけ Consumerの方が遅ければ, Queueにサイズ制…