编程思想转换

做什么,而不是怎么做

我们真的希望创建一个匿名内部类对象吗?不。我们只是为了做这件事情而不得不创建一个对象。我们真正希望做的事情是︰将run方法体内的代码传递给 Thread类知晓。

传递一段代码——这才是我们真正的目的。而创建对象只是受限于面向对象语法而不得不采取的一种手段方式。那,有没有更加简单的办法?如果我们将关注点从""怎么做"回归到"做什么"的本质上,就会发现只要能够更好地达到目的,过程与形式其实并不重要。

生活举例

当我们需要从北京到上海时,可以选择高铁、汽车、骑行或是徒步。我们的真正目的是到达上海,而如
l何才能到达
上海的形式并不重要,所以我们一直在探索有没有比高铁更好的方式——搭乘飞机。

而现在这种飞机(甚至是飞船)已经诞生∶2014年3月Oracle所发布的Java 8( JDK 1.8)中,加入了Lambda表达式的重量级新特性,为我们打开了新世界的大门。

Lambda表达式

语义分析

仔细分析该代码中的语义,Runnable接口只有一个run方法的定义∶
  public abstract void run( ) ;
即制定了一种做事情的方案(其实就是一个函数)︰

  ·无参数︰不需要任何条件即可执行该方案。·无返回值:该方案不产生任何结果。
  ·代码块(方法体)︰该方案的具体执行步骤。

同样的语义体现在Lambda语法中,要更加简单︰

() -> system.out.println("多线程任务执行!")

·前面的一对小括号即run方法的参数(无),代表不需要任何条件﹔

最新文章

  1. MySql操作
  2. 一个 -100.01 的double 在内存中怎么存储的. 一个中文String 在内存中占多少直接 utf-8 / GBK
  3. 【转】logback logback.xml常用配置详解(三) <filter>
  4. solr全文检索原理及solr5.5.0 Windows部署
  5. SimpleHashTable
  6. 用C#开发的双色球走势图(二)
  7. S1:原型继承
  8. Learning LexRank——Graph-based Centrality as Salience in Text Summarization(一)
  9. 浙江大学PAT上机题解析之3-05. 求链式线性表的倒数第K项
  10. net开源cms系统
  11. wamp本地安装phpwind问题:‘Rewrit…
  12. 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」
  13. SQL SELECT DISTINCT 语句
  14. Pycharm安装pygame游戏库遇到的问题
  15. 访问器 & 修改器
  16. I2S接口介绍
  17. 2015-09-17html课程总结2+了解css
  18. 微信小程序 - 深度定义骨架屏(提示)
  19. asp.net存储过程分页+GridView控件 几百万数据 超快
  20. 【Golang 接口自动化02】使用标准库net/http发送Post请求

热门文章

  1. 【Virt.Contest】CF1155(div.2)
  2. 嵌入式-C语言基础:字符串比较函数strcmp及其实现
  3. Codeforces Round #834 (Div. 3) A-G
  4. 2022年鲜为人知的CSS 特性了解起来~
  5. 【Linux】通过Crontab和shell脚本实现定期备份和删除PG数据库表数据
  6. Linux和shell面试内容
  7. Boolean.getBoolean() 与 Boolean.parseBoolean()
  8. vulnhub靶场渗透实战13-driftingblues3
  9. Linux命令第三部分
  10. Selenium4+Python3系列(十二) - 测试框架的设计与开发