zoukankan      html  css  js  c++  java
  • lambda高级进阶--延迟执行

    前面的整理我们也已经说到了,使用lambda表达式的主要原因是,将代码的执行延迟到一个合适的时间点。在使用lambda表达式的时候务必记住一点就是说lambda表达式都是延迟执行的。
    延迟执行代码的原因有很多,具体的如下。
    1,在另外一个线程中运行代码
    2,多次运行代码
    3,在某个算法的正确时间点上运行代码,比如排序中的比较操作
    4,当某些情况发生时才运行代码
    5,只有在需要的时候才运行代码。

    当我们在使用lambda表达式的时候,就应该好好的考虑下希望达到什么样的效果。这里来举一个日志的例子吧。
    我们在使用logger.info输出日志,代码如下:logger.info("x的长度是:" + x.length());代码是没问题,但是这里会有一个性能上的问题来,不管上面的代码是否被真的执行,这个x的字符串都会被计算然后传递给info方法,那么为什么我们不能再确定需要打印的时候,再去计算这个字符串呢?

    怎么改进一下好呢?惯用的办法就是将上面的这段代码包装成一个无参数的lambda的表达式,只有在需要的时候才能运行代码,这也是使用lambda表达式的一种情况。
    现在我们来编码,这段编码实际的运行效果分如下步骤:
    1,接受lambda表达式
    2,检查他是否应该被调用
    3,在需要的时候调用它。

    以下是包装过后的代码:
    public class Linkin
    {
    	static final Logger LOG = LoggerFactory.getLogger(Linkin.class);
    
    
    	public static void delayDebug(Supplier<String> message)
    	{
    		if (LOG.isDebugEnabled())s
    		{
    			LOG.debug(message.get());
    		}
    	}
    
    
    	public static void main(String[] args)
    	{
    		delayDebug(() -> "这里只是随便的测试");
    	}
    }

  • 相关阅读:
    了解node.js
    RC4 in TLS is Broken: Now What?
    LDAP 在ubuntu14.04下的安装配置install and configure
    Bucking the stigma (留学生请摘掉有色眼镜看社区大学)
    SSL Labs: Increased Penalty When TLS 1.2 Is Not Supported
    PostgresQL中的NUlls first/last功能
    网页小工具集合
    T-SQL在线格式化工具
    sudoers文件解析
    Java提高篇——JVM加载class文件的原理机制
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5232955.html
Copyright © 2011-2022 走看看