メモの日々


2003年07月23日(水) [長年日記]

[dev] エクストリームプログラミング エピソード (Agileware)

XP-jp MLより。ボーリングスコア計算のプログラムをテストファースト/ペアプログラミングで開発する様子を描いた文章。途中からコードを追うのは疲れたので会話の部分だけを読んだけれど、とても面白くためになる。

RCM:(うまく行くまで、1を足したり引いたりを試しながら)

という所でニヤリとしてしまった。

読み終わったらすぐプログラミングしよう。

[java] double-checked lockingとSingletonパターン (developerWorks)

最近読んだのだけれど再び読もうとしたらなかなか記事を見つけられなかったのでメモしておく。「ダブルチェック」で検索して探していたのだが英語表記だったか。

private static Singleton instance;

public static Singleton getInstance() {
  if (instance == null) {
    synchronized(Singleton.class) {
      if (instance == null) {
        instance = new Singleton();
      }
    }
  }
  return instance;
}

のようなdouble-checked lockingのイディオムは機能しないという話。フラグを使えばいけるんじゃないかと思うんだけどダメなのかな?

private static Singleton instance;
private static boolean created = false;

public static Singleton getInstance() {
  if (!created) {
    synchronized(Singleton.class) {
      if (!created) {
        instance = new Singleton();
        created = true;
      }
    }
  }
  return instance;
}

どうかなあ。マルチスレッドはややこしいので、数学の証明のように問題がないことを厳密に示す手法があればいいのに(あるのかな?)。でもあれこれ悩むよりまずsynchronizedメソッドとして実装し、そこがボトルネックだと判明してから改善方法を考えるのが生産性の高い手法か。関連する話題:

ザリガニ (capsctrldays)

描いてみました。

ザリガニ

なんか普通ですみません。5月25日パーマンも描いています。これはテレビを見た直後なので反則ですが。

ザリガニは何かすると青くなるというのを何かの番組で放送していたけど何だったかな。

やること

  • 電気カミソリを買う
本日のツッコミ(全1件) [ツッコミを入れる]
kdmsnr (2003年07月24日(木) 03:21)

わー!感激です。ありがとうございます。<br>ちなみに、トリビアの泉で、サバです。