第十三章: 明示的なロック

普通のlockには制限があるので、その制限から逃れたい場合にはReentrantLockを使うと良いですよ、って内容。 finally句でのunlockが必要で、忘れがちなので通常はlockやsynchronizedを使う方が良い。但し、ポーリングやインタラプト、時間制限などを用いたい…

第十四章: カスタムシンクロナイザを構築する

条件キューのお話。 条件キュー Javaオブジェクトにはステートの条件を待つための仕組みが備わっている。 lock, wait, notify, notifyAll がそれに該当する。notifyは任意のスレッドが選択されて通知される。例えば、サイズ制限付きバッファを実装する際、「…

第十六章: 名詞構文・無生物主語

名詞構文 動詞か形容詞を書き換えて、その周りに必要な要素をつける。 The manager collects the membership fees every month. この文章は「マネージャが毎月会費を集める」という意味になる。何かの会に参加したとき、毎月会費を集めることを示す文として…

第十七章: 強調・倒置・挿入・省略・同格

ここは自然な英語を使うためのエッセンスといった感じ。感覚的に大体分かるので飛ばし読みです。本当は大事なところなんだけど・・・。 Do/Does/Did を使った強調 Do/Does/Didを助動詞と使って動詞を強調する。助動詞に続く動詞は原型になる。 Do feel free …

第十二章: 試験

2時就寝、7時半起床。 うーん、ここはパス。難しいというよりはまだ必要ではない。

第十五章: 話法

ちょっと忙しくてさぼってしまった・・・。 1時就寝、7時起床。 話法 直接話法と間接話法がある。 誰が話しているのか、を意識して、時制の一致と指示語などに注意すれば問題ない印象。 sayとtell say: 話す相手を示さずに使える。示すときは "said to me" …

第十四章: 否定

否定語 not: 一般動詞のときはdo/does/didを使う no: 名詞と結びつく。数えられる名詞・数えられない名詞のどちらにも結びつくことが出来る。 I have no money with me. 何を否定するか? 基本的にはnotに続く部分を否定する。但し、述語動詞の前に否定語が…

第十一章: 実行性能とスケーラビリティ

1時半就寝、7時45分起床。 うーん、正直この辺りは今はさっと見るだけで良いかな。何より安全なコードを書ける方が大事なので。 チューニング 並行プログラムのチューニングにおいては、推測でチューニングせず、実測でチューニングすること。 アムダールの…

今週のまとめ

なんだか今週は色々とプライベートに落ち込む出来事があり、駄目だった・・・。もうすぐ新年度が始まるなぁ。

第十章: 生存事故

1時半就寝・7時半起床。 ロック順によるデッドロック 最も良くある生存事故のパターン。全てのスレッドが同じ順序でロックを取得しないと、デッドロックに陥る可能性がある。 public void leftRight() { synchronized(left) { synchronized(right) { ... } }…

第十三章: 疑問

12時半就寝、7時半起床。 疑問詞の語順 主語を疑問詞にする場合: 語順を変えずに主語を疑問詞に置き換え He saw her. Who saw her ? 主語以外の要素を疑問詞にする場合: Yes/No疑問文を作り、先頭に疑問詞をつける You saw him. Who did you see ? 「誰が・…

第九章: GUIアプリケーション

1時半就寝。7時半起床。昨日は体調が悪かったのでお休みしました。 Swingのイベントスレッド拘束 Swingのコンポーネントとモデルには、EDTからしかアクセスしてはいけない。 ただし、Swingのメソッドの一部はどのスレッドからも呼び出すことが可能。 SwingUt…

第十二章: 仮定法

1時半就寝、7時40分起床。 仮定法 動詞の形が直説法とはズレる。 今のこと: 過去形 昔のこと: 過去完了形 で表す。 過去形で過去のことを言っていれば直説法、今のことを言っていれば仮定法。 過去完了形で過去のことを言っていれば直説法、単なる過去のこと…

第八章: スレッドプールを利用する

Executorフレームワークの拡張ポイントや、応用について。この辺りは実際使うことになったらリファレンスとして参照するような箇所に思えるので割愛します。 Executorを使う際の注意点 タスクのスレッドでThreadLocalを使う場合は注意。Executorは臨機応変に…

第七章: キャンセルとシャットダウン

MacのFirefoxは本当に動作が不安定(しかも重いし・・・)。Safariに乗り換えたくなってきたけど、del.icio.usのエクステンションが無いのは辛いです。 キャンセルフィールドによる中断処理 こんな感じ? public static void main(String[] args) { try { Li…

今週のまとめ

Java並行処理は基本概念みたいなところは一通り終わったようなので、後は飛ばし飛ばし読んでいこうと思う。出来れば来週中に終わらせたいな。 英語については、相変わらず亀ですが来月一週目でForestが終わりそうかな。可能なら今月中に終わらせたい! 段々…

第十章: 比較

この辺りになってくると、段々知識量の問題になってくるなぁ。熟語集でも眺めれば解決出来そうなので、手抜きになってきます。ところどころメモ。余り真剣に読み込んだりはしていません。 比較の方法 比較の軸となるものを中心に、2つの文を"接続"する。 同…

第十一章: 関係代名詞

段々ただ記録することだけが目的となりつつあるので反省。ただのメモの羅列になっているときは頭に入っていないと思って良いですね。 関係代名詞・関係副詞 名詞の後ろに関係詞節を置く。関係代名詞は大抵節の最初にあるので、関係詞節だけを見ると目的語と…

マイクロソフトでは出会えなかった天職

イングリッシュマフィンと共に迎える朝。マフィンが好きです。今日はバターを落として、さっと火を通したベーコンを挟んで食べました。 図書館に行って本を借りた後、カフェで読書。これが素晴らしい本でした。マイクロソフトでは出会えなかった天職 僕はこ…

ALWAYS 続三丁目の夕日

ALWAYS 続・三丁目の夕日[DVD通常版]出版社/メーカー: バップ発売日: 2008/05/21メディア: DVD購入: 5人 クリック: 74回この商品を含むブログ (133件) を見る今日は完全オフの日にしました。お昼から銀座に出掛けて靴を買いました。基本的に意匠が好きなので…

第六章 (2): 並列化出来る/すべき箇所を見つける

1時15分就寝, 7時45分起床。 結果を表すタスク Executorフレームワークではタスクを扱うオブジェクトとしてRunnableを使うが、Runnableは結果を返せないし、例外を投げることも出来ない。Callableを使うとこのような問題が解決される。 並列化する箇所 例え…

第九章: 分詞

1時40分就寝、7時40分起床。 今日は分詞。基本的なところを押さえる。難しい用法とかは無視します(そこを覚えるのは目的ではないので)。 分詞は1つの文と同じ内容を短く表すもの。例えば以下の2つの文があるとする。 He came into the room. He was smilin…

第六章 (1): Executor

1時半就寝、7時半起床。たまたま仕事が普通の時間に終わったので、読書した後に深夜に遊んでしまった。ピアノ、欲しいなー。買おうかなー。 Executorフレームワーク タスクの実行と依頼を分離するフレームワーク。プロデューサ・コンシューマパターンを実現…

名前探しの放課後

名前探しの放課後(上)作者: 辻村深月出版社/メーカー: 講談社発売日: 2007/12/21メディア: 単行本(ソフトカバー)購入: 3人 クリック: 68回この商品を含むブログ (91件) を見る読了。良かったー。最後にお話が綺麗に終わって、あぁ良かったなぁという余韻に…

第八章: 動名詞

不定詞のように文を圧縮して述べることが出来る準動詞だが、不定詞とは異なり習慣的行為(繰り返しの行為)を表す。 動名詞: Sleeping till late in the morning is pleasant. 「(普段から)朝遅くまで寝ていて、それはとても気持ち良い」 不定詞: To sleep…

第五章 (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にサイズ制…