net.sf.ehcache.Cache#initialise メソッドって何してるの?

initialise()メソッドの主な処理

initialise()メソッドの主な処理は、以下のようになります。(ehcache-1.4.1)

  1. status が Status.STATUS_UNINITIALISED なら、IllegalStateException を発生。
  2. maxElementsInMemory の値が 0 の場合、「1以上にしたほうがいいよ」と、警告レベルのログを出力する。これは、MemoryStore を使わないと、使う場合の半分の性能になってしまうからとのこと。(それがなぜかは要確認ですね〜)
  3. isOverflowToDisk が設定されていれば、DiskStore を作成。
  4. MemoryStore を作成。
  5. status を Status.STATUS_ALIVE にセット。
  6. 登録済みの CacheExtension を初期化。
  7. disableフィールドが true の場合は、警告レベルのログを出力する。

disableフィールドは、インスタンス初期化時セットされるプライベート変数で、システムプロパティ "net.sf.ehcache.disabled" の値が "true"(大文字小文字はどちらでもOK) の場合に true に設定されます。

システムプロパティ "net.sf.ehcache.disabled"

システムプロパティ "net.sf.ehcache.disabled" は、Cache クラスの中で以下のように定義されています。

public static final String NET_SF_EHCACHE_DISABLED = "net.sf.ehcache.disabled";

private boolean disabled

disabled が true の場合は、bootstrap(), put(), putQuiet()が動作しなくなります。

initialise()メソッドまとめ

ということで、initialize()メソッドは、キャッシュの基本的な初期化を行っていることがわかります。当然、スレッドセーフです。