每天学一点Scala之lazy

简介:

特性:

A、将一个变量声明为lazy,则只有第一次使用该变量时,才会进行初始化;

B、  赖加载特性

使用场景:使用于比较耗时的计算业务;如网络IO,磁盘IO等;

marathon源码,与spark源码中同样大量使用了这种特性;

Java中的赖加载与scala中的赖加载的区别?

1、  Java中的赖加载,实例:如单例模式

代码如下:

wKiom1mPrVSRqIrOAAB4_M2fGug663.png-wh_50

2、  Scala中实现赖加载,是通过关键字lazy来实现的,也就是说,在scala中,赖加载的实现是语法级别的,而Java中需要自己实现。

    测试scala中,lazy的效果?

  1. 未使用lazy,查看打印日志顺序

wKiom1mPrXmTdgSGAABjeJAzl8o381.png-wh_50

b. 使用lazy

wKioL1mPreXQmpx3AAB22lAXcCM886.png-wh_50

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

wKiom1mPrhuRTHd_AACTxTYE89U177.png-wh_50













本文转自故新51CTO博客,原文链接: http://blog.51cto.com/xingej/1955861,如需转载请自行联系原作者








相关文章
|
Scala
Scala Lazy 惰性加载变量 你知道吗?
Scala Lazy 惰性加载 原写法;
121 0
|
Java Scala 编译器
Scala关键字lazy的理解和使用
Scala关键字lazy的理解和使用
1353 0
|
2月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
51 5
|
2月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
50 3
|
2月前
|
消息中间件 分布式计算 NoSQL
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新
42 0
|
2月前
|
消息中间件 存储 分布式计算
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset
93 0
|
2月前
|
分布式计算 大数据 Java
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
26 1
大数据-86 Spark 集群 WordCount 用 Scala & Java 调用Spark 编译并打包上传运行 梦开始的地方
|
2月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
39 0
|
2月前
|
缓存 分布式计算 大数据
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(一)
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(一)
50 0
|
2月前
|
分布式计算 算法 大数据
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(二)
大数据-90 Spark 集群 RDD 编程-高阶 RDD容错机制、RDD的分区、自定义分区器(Scala编写)、RDD创建方式(二)
52 0