Scalaのlazyというkeywordはどのように実装されているのかを見てみます。確認したプログラムは以下のシンプルなもので、lzというフィルドはlazy valによって宣言されています。

class Foo {
  lazy val lz = 5
}

それでこのプルグラムをコンパイルして、更にJDツールでデコンパイルすると、以下のコードとなります。

public class Foo
{
  private int lz;
  private volatile boolean bitmap$0;

  private int lz$lzycompute()
  {
    synchronized (this) {
      if (!this.bitmap$0) { this.lz = 5; this.bitmap$0 = true;}
      return this.lz;
    }
  }
  public int lz() { return this.bitmap$0 ? 13 more words