タグ

ブックマーク / blog.j5ik2o.me (4)

  • 遅延初期化には気をつけろ - かとじゅんの技術日誌

    フィールドの遅延初期化について勉強したので要約としてまとめておきます。 遅延初期化とは 遅延初期化とは、コンストラクタなどで事前にフィールドを初期化するのではなく、フィールドが利用される時に初期化することいいます。遅延初期化は諸刃の剣と呼ばれていて、必要がなければやらないというのが考え方らしい。 public class Fuga{ private Hoge hoge; public Hoge getHoge(){ if ( hoge == null ){ hoge = new Hoge(); // 遅延初期化している } return hoge; } } ただ、この場合だと複数のスレッドから呼び出されてしまうと、遅延初期化が循環してしまいます。(遅延初期化循環といいます)ではなく、複数のスレッドが割り込むと初期化が何度も行われてしまうということ。 追記:さらにいうとシングルトンは単一のイ

    遅延初期化には気をつけろ - かとじゅんの技術日誌
    adachi_c
    adachi_c 2015/06/23
  • シングルトンパターンの遅延初期化をスレッドセーフにするには - じゅんいち☆かとうの技術日誌

    前回、前々回と割とヘビーな仕様の話だったので、今回は若干実用的なネタとして、シングルトンパターンの遅延初期化をメモリモデルの視点から、どのようにすればスレッドセーフになるか考えてみたいと思います。 そのシングルトンの遅延初期化はスレッドセーフか 以下のようなシングルトンパターンは日常的に使うデザインパターンの一つだと思います。 ただ、今回はSingletonクラスのgetInstanceメソッドに、わざとロックを掛けずに実装してみました。この場合にどういうことが起こりうるか考えてみたいと思います。 public class Singleton { private static Singleton instance; public static Singleton getInstance() { // バリアがない if (instance == null) { // Normal Load

    シングルトンパターンの遅延初期化をスレッドセーフにするには - じゅんいち☆かとうの技術日誌
    adachi_c
    adachi_c 2015/06/23
  • nullという値は本当に必要か考えよう - かとじゅんの技術日誌

    今回は、nullの扱いは気をつけようねというお話。特にこれからの人に読んでもらいたい。 nullは変数を初期化する時などに、当たり前のように登場します。Javaではnullがないなんて考えられないわけです。(C#でも同様) しかし、nullの考案者のTony Hoareは「10億ドル単位の過ち」と発言しています。 null参照の考案は10億ドル単位の過ち?(スラッシュドット・ジャパン) - エキサイトニュース nullには、それだけの魔性があって使い方を考える必要があります。nullは”値が存在しない”という状態を表現する時に使われることが多いのですが、そのnullに対する注意が十分に払えずにトラブってしまうことが多いのです。Scalaではその"値が存在しない"という状態をOption型のNoneで表現することでnullを回避する手段が提供されています。JavaではScalaのようにはでき

    nullという値は本当に必要か考えよう - かとじゅんの技術日誌
    adachi_c
    adachi_c 2013/05/23
    "空の配列や、空のコレクションを返せば、クライアント側のコードは複雑にならなくて済みます。"
  • ドワンゴを退職しました - かとじゅんの技術日誌

    2/28日付けでドワンゴを退職しました。お世話になった会社なのでちゃんとお礼をいっておこうと思います。 初めてのコンシューマ向けウェブサービスでした。とてもよい経験をさせてもらいました。ありがとうございました。 一番大きいところは、ScalaとDDDを採用したサービスを開発してリリースしたってことですね。そのあたりの詳しい話は Scala Conference 2013 で聞けると思います*1。 Scalaで開発した感想ですが、よく話題になる習得コストはそれほどかからなかったように思います。ある程度先にScalaをやっている人がいれば、その人を軸に最初は命令型(var)で書いて言語仕様も部分的な理解でも問題なかったですね。慣れてきたらvalのコードに挑戦するとよいですね。valでコードが書けるとより関数型スタイルになるので、コードが理解しやすくなります。 こういう風に段階的に学習して、プロ

    ドワンゴを退職しました - かとじゅんの技術日誌
    adachi_c
    adachi_c 2013/03/01
  • 1