函数式编程思想概述

在数学中,函数就是有输入量、输出星的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调"必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法―—强调做什么,而不是以什么形式做。

冗余的Runnable代码

传统写法

当需要启动一个线程去完成任务时,通常会通过`java.lang .Runnable`接口来定义任务内容,并使用java.lang.Thread类来启动该线程。代码如下:

package Demo01.Lambda;

public class Demo01Runnable {
public static void main(String[] args) {
//创建runnable接口的实现类对象
RunnableImpl run = new RunnableImpl();
//创建Thread类对象,构造方法中传递Runnable接口的实现类
Thread t = new Thread(run);
//调用start方法开启新线程,执行run方法
t.start(); //简化代码,使用匿名内部类,实现多线程程序
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"创建了一个新的线程");
}
};
new Thread(r).start();
//简化代码 new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"创建了一个新的线程");
}
}).start();
}
}

代码分析

对于Runnable的匿名内部类用法,可以分析出几点内容︰  

  Thread类需要Runnable接口作为参数,其中的抽象run方法是用来指定线程任务内容的核心;·

  为了指定run的方法体,不得不需要Runnable接口的实现类;  

  为了省去定义一个RunnableImpl实现类的麻烦,不得不使用匿名内部类﹔  

  必须覆盖重写抽象run方法,所以方法名称、方法参数、方法返回值不得不再写一遍,且不能写错

  而实际上,似乎只有方法体才是关键所在。

最新文章

  1. JAVA-android 更改APP名称与图标
  2. php之thinkphp部署Linux
  3. BZOJ2448 : 挖油
  4. [转载]强烈推荐学习的blog
  5. 连续自然数和(codevs 1312)
  6. php session 跨页失效问题
  7. iOS苹果开发者客服电话地址
  8. [转]内嵌页面iframe以及和其兄弟iframe的相互传值
  9. 关于$_SERVER 常量 HTTP_X_FORWARDED_HOST与 HTTP_HOST的问题
  10. Javascript中String、Array常用方法介绍
  11. JS中call、apply的用法说明
  12. Python数据处理——numpy_3
  13. 2014/08/23——OJ及相关站点打开速度非常慢,训练计划login直接error!
  14. 伺服电机&旋转变压器&光电编码器
  15. HTTP协议学习(一)
  16. HBuilder使用夜神模拟器调试Android应用
  17. B-number 数位dp
  18. Android recovery支持adb shell
  19. Javaweb学习笔记——(八)——————常见系统体系结构,Tomcat,以及web的内部外部应用,http协议概述
  20. 并发 --- 2 进程的方法,进程锁 守护进程 数据共享 进程队列, joinablequeue模型

热门文章

  1. Transformer 结构分析
  2. 前后端分离项目(十):实现"改"功能(前后端)
  3. ES6 学习笔记(九)Set的基本用法
  4. Docker基础和常用命令
  5. uniapp之uni-starter小程序多端研发框架搭建与项目实践
  6. 【Java并发004】原理层面:synchronized关键字全解析
  7. Dubbo-Activate实现原理
  8. ubuntu 18.04安装tensorflow (CPU)
  9. Velocity模板引擎的的使用示例(入门级)
  10. 腾讯云数据库SaaS致力于构建数据库分布式云,为更多更广的用户提供服务