1. 程式人生 > >每天學一點Scala之lazy

每天學一點Scala之lazy

scala lazy

特性:

A、將一個變量聲明為lazy,則只有第一次使用該變量時,才會進行初始化;

B、 賴加載特性

使用場景:使用於比較耗時的計算業務;如網絡IO,磁盤IO等;

marathon源碼,與spark源碼中同樣大量使用了這種特性;

Java中的賴加載與scala中的賴加載的區別?

1、 Java中的賴加載,實例:如單例模式

代碼如下:

技術分享

2、 Scala中實現賴加載,是通過關鍵字lazy來實現的,也就是說,在scala中,賴加載的實現是語法級別的,而Java中需要自己實現。

測試scala中,lazy的效果?

  1. 未使用lazy,查看打印日誌順序

技術分享

b. 使用lazy

技術分享

marathons源碼中,大量使用了此特性

技術分享


本文出自 “XEJ分布式工作室” 博客,請務必保留此出處http://xingej.blog.51cto.com/7912529/1955861

每天學一點Scala之lazy