函数式编程思想概述-冗余的Runnable代码
函数式编程思想概述
在数学中,函数就是有输入量、输出星的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调"必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法―—强调做什么,而不是以什么形式做。
冗余的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方法,所以方法名称、方法参数、方法返回值不得不再写一遍,且不能写错
而实际上,似乎只有方法体才是关键所在。