jdk 8 开始 java 引入了lambda 表达式。

lambda适用场景:

1、接口或父类

2、接口或父类只有一个方法

我们从多线程写法来推导一下:

1、外部类写法:

package com.xzlf.thread;
/**
* Lambda 表达式推导一:外部类
* @author xzlf
*
*/
public class LambdaTest01 {
public static void main(String[] args) {
ThreadA ta = new ThreadA();
new Thread(ta).start();
}
} class ThreadA implements Runnable{ @Override
public void run() {
System.out.println("外部类");
}
}

运行结果:

2、静态内部类写:

package com.xzlf.thread;
/**
* Lambda 表达式推导二: 静态内部类
* @author xzlf
*
*/
public class LambdaTest02 {
public static void main(String[] args) {
ThreadA ta = new ThreadA();
new Thread(ta).start();
} static class ThreadA implements Runnable{ @Override
public void run() {
System.out.println("静态内部类");
}
}
}

运行结果:

3、局部内部类写法:

package com.xzlf.thread;
/**
* Lambda 表达式推导三:局部内部类
* @author xzlf
*
*/
public class LambdaTest03 {
public static void main(String[] args) {
class ThreadA implements Runnable{ @Override
public void run() {
System.out.println("静态内部类");
}
} ThreadA ta = new ThreadA();
new Thread(ta).start();
} }

运行结果:

4、匿名内部类写法:

package com.xzlf.thread;
/**
* Lambda 表达式推导四:匿名内部类
* @author xzlf
*
*/
public class LambdaTest04 {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类");
}
}).start();
}
}

运行结果:

5、lambda表达式:省略接口名 和 方法名

package com.xzlf.thread;
/**
* Lambda 表达式推导五:lambda 表达式 :省略接口名 和 方法名
* @author xzlf
*
*/
public class LambdaTest06 {
public static void main(String[] args) {
new Thread(() -> {
System.out.println("匿名内部类");
}).start();
}
}

运行结果:

6、lambda表达式 :省略大括号(方法内只有一行代码):

package com.xzlf.thread;
/**
* Lambda 表达式推导六:lambda 表达式 :省略大括号
* @author xzlf
*
*/
public class LambdaTest05 {
public static void main(String[] args) {
new Thread(() -> System.out.println("lambda 简化")).start();
}
}

运行结果:

7、lambda表达式带参数写法:

package com.xzlf.thread;
/**
* Lambda 表达式推导七:lambda 表达式 :省略接口名 和 方法名
* @author xzlf
*
*/
public class LambdaTest07 {
public static void main(String[] args) {
ILike like = (String name) -> {
System.out.println("i like " + name);
};
like.like("lambda");
}
} interface ILike{
void like(String name);
}

运行结果:

8、lambda表达式带参数简化写法:

方法只有一个lambda会自动匹配参数类型,可以省略参数类型和大括号:

public class LambdaTest07 {
public static void main(String[] args) {
ILike like = (name) -> System.out.println("i like " + name); like.like("lambda");
}
} interface ILike{
void like(String name);
}

运行结果:

9、lambda表达式带参数和返回值写法:

一样的,方法只有一个,且方法内只有一条语句时,可以省略参数类型和大括号以及 return 关键字;

public class LambdaTest07 {
public static void main(String[] args) {
Count c = (a, b) -> a + b;
int sum = c.add(10, 20);
System.out.println(sum); }
} interface Count{
int add(int a, int b);
}

运行结果:

Java 多线程 -- lambda 表达式推导的更多相关文章

  1. 深入浅出 Java 8 Lambda 表达式

    摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等.本文系 OneAPM 工程师编译整理. Java 是一流的面向对象语言,除了部分简 ...

  2. 转载:深入浅出 Java 8 Lambda 表达式

    原文地址:http://viralpatel.net/blogs/Lambda-expressions-java-tutorial/ OneAPM for Java 能够深入到所有 Java 应用内部 ...

  3. Java 8 Lambda表达式

    Java 8 Lambda表达式探险 http://www.cnblogs.com/feichexia/archive/2012/11/15/Java8_LambdaExpression.html 为 ...

  4. Java 8 Lambda表达式10个示例【存】

    PS:不能完全参考文章的代码,请参考这个文件http://files.cnblogs.com/files/AIThink/Test01.zip 在Java 8之前,如果想将行为传入函数,仅有的选择就是 ...

  5. Java 8 Lambda 表达式

    Lambda 是啥玩意 简单来说,Lambda 就是一个匿名的方法,就这样,没啥特别的.它采用一种非常简洁的方式来定义方法.当你想传递可复用的方法片段时,匿名方法非常有用.例如,将一个方法传递给另外一 ...

  6. Java 8 lambda表达式示例

    例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例.看一下Java 8之前的runna ...

  7. Java 8 Lambda 表达式详解

    一.Java 8 Lambda 表达式了解 参考:Java 8 Lambda 表达式 | 菜鸟教程 1.1 介绍: Lambda 表达式,也可称为闭包,是推动 Java 8 发布的最重要新特性. La ...

  8. 用Java 8 Lambda表达式实现设计模式:命令模式

    在这篇博客里,我将说明如何在使用 Java 8 Lambda表达式 的函数式编程方式 时实现 命令 设计模式 .命令模式的目标是将请求封装成一个对象,从对客户端的不同类型请求,例如队列或日志请求参数化 ...

  9. Java基础学习总结(44)——10个Java 8 Lambda表达式经典示例

    Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Ja ...

随机推荐

  1. 从零搭建一个SpringCloud项目之Feign搭建

    从零搭建一个SpringCloud项目之Feign搭建 工程简述 目的:实现trade服务通过feign调用user服务的功能.因为trade服务会用到user里的一些类和接口,所以抽出了其他服务需要 ...

  2. [hdu1269]城堡迷宫<tarjan强连通分量>

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 tarjan算法是oi里很常用的一个算法,在理解方面需要多下一些功夫,如果不行直接记模板也行,因 ...

  3. 对webpack和gulp的理解和区别

    webpack是前端构建工具,称为模块打包机,webpack支持模块化:构建前端开发过程中常用的文件,如:js,css,html,img等:使用简单方便,自动化构建.webpack是通过loader( ...

  4. Java 程序该怎么优化?(实战篇)

    面试官:出现了性能问题,该怎么去排查呢? 程序猿:接口响应那么慢,时间都花到哪里去了? 运维喵:为什么你的应用跑着跑着,CPU 就接近 100%? 分享一些真实生产问题排查故事,看看能否涨姿势,能否 ...

  5. PTA数据结构与算法题目集(中文) 7-29

    PTA数据结构与算法题目集(中文)  7-29 7-29 修理牧场 (25 分)   农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L​i​​个长度单位,于是他购买了一条 ...

  6. Scratch 第2课淘气男孩儿

    素材及视频下载 链接:https://pan.baidu.com/s/1qX0T2B_zczcLaCCpiRrsnA提取码:xfp8

  7. es搜索排序不正确

    沿用该文章里的数据https://www.cnblogs.com/MRLL/p/12691763.html 查询时发现,一模一样的name,但是相关度不一样 GET /z_test/doc/_sear ...

  8. .NET 下基于动态代理的 AOP 框架实现揭秘

    .NET 下基于动态代理的 AOP 框架实现揭秘 Intro 之前基于 Roslyn 实现了一个简单的条件解析引擎,想了解的可以看这篇文章 https://www.cnblogs.com/weihan ...

  9. Spark 1.5 to 2.1.X

    api差异参考官网地址:https://spark.apache.org/docs/2.1.1/sql-programming-guide.html#upgrading-from-spark-sql- ...

  10. 双色球的Python实现

    代码如下: red_ball = [] blue_ball = [] count = 0 while count < 6: n = int(input('\033[31mPlease enter ...