Java 多线程 -- lambda 表达式推导
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 表达式推导的更多相关文章
- 深入浅出 Java 8 Lambda 表达式
摘要:此篇文章主要介绍 Java8 Lambda 表达式产生的背景和用法,以及 Lambda 表达式与匿名类的不同等.本文系 OneAPM 工程师编译整理. Java 是一流的面向对象语言,除了部分简 ...
- 转载:深入浅出 Java 8 Lambda 表达式
原文地址:http://viralpatel.net/blogs/Lambda-expressions-java-tutorial/ OneAPM for Java 能够深入到所有 Java 应用内部 ...
- Java 8 Lambda表达式
Java 8 Lambda表达式探险 http://www.cnblogs.com/feichexia/archive/2012/11/15/Java8_LambdaExpression.html 为 ...
- Java 8 Lambda表达式10个示例【存】
PS:不能完全参考文章的代码,请参考这个文件http://files.cnblogs.com/files/AIThink/Test01.zip 在Java 8之前,如果想将行为传入函数,仅有的选择就是 ...
- Java 8 Lambda 表达式
Lambda 是啥玩意 简单来说,Lambda 就是一个匿名的方法,就这样,没啥特别的.它采用一种非常简洁的方式来定义方法.当你想传递可复用的方法片段时,匿名方法非常有用.例如,将一个方法传递给另外一 ...
- Java 8 lambda表达式示例
例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例.看一下Java 8之前的runna ...
- Java 8 Lambda 表达式详解
一.Java 8 Lambda 表达式了解 参考:Java 8 Lambda 表达式 | 菜鸟教程 1.1 介绍: Lambda 表达式,也可称为闭包,是推动 Java 8 发布的最重要新特性. La ...
- 用Java 8 Lambda表达式实现设计模式:命令模式
在这篇博客里,我将说明如何在使用 Java 8 Lambda表达式 的函数式编程方式 时实现 命令 设计模式 .命令模式的目标是将请求封装成一个对象,从对客户端的不同类型请求,例如队列或日志请求参数化 ...
- Java基础学习总结(44)——10个Java 8 Lambda表达式经典示例
Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动.特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里.在Ja ...
随机推荐
- openssl与java(读取加密码的密钥)
最近在研究java security方面的东西,java自带可以使用各种加密解密算法(rsa,dsa,des3,aes,md5...),但往往一些密钥是第三方给我们的,我们需要用java装载这些密钥然 ...
- [vijos1145]小胖吃巧克力<概率dp>
题目链接:https://vijos.org/p/1145 貌似还有一个一样的题是poj1322 chocolate,两个题只是描述不一样,意思都是一样的,不贵最近貌似poj炸了,所以也没法去poj ...
- LeetCode(42.接雨水)多解法详解
接雨水解法详解: 题目: 基本思路:从图上可以看出要想接住雨水,必须是凹字形的,也就是当前位置的左右两边必须存在高度大于它的地方,所以我们要想知道当前位置最多能存储多少水,只需找到左边最高处max_l ...
- turtle实例
1.彩虹 (1) from turtle import * def HSB2RGB(hues): hues = hues * 3.59 #100转成359范围 rgb=[0.0,0.0,0.0] i ...
- 关于HashSet与HashMap
package com.test; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; i ...
- MySql 分组函数
#二.分组函数/*功能:用作统计使用,又称为聚合函数或统计函数或组函数 分类:sum 求和.avg 平均值.max 最大值 .min 最小值 .count 计算个数 特点:1.sum.avg一般用于处 ...
- CCF题库刷题编译错误
最近在CCF上刷题,因为C语言更合适,就使用了devc编译器,选择C语言但是却报编译错误 后来查了一下,发现在提交时选择C++语言就能满分通过,问题得以解决.
- PTA | 1056 组合数的和 (15分)
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字.要求所有可能组合出来的 2 位数字的和.例如给定 2.5.8,则可以组合出:25.28.52.58.82.85 ...
- 【数据库】MySQL数据库(二)
一.数据库文件的导出 1.在DOS命令行下导出数据库(带数据) mysqldump -u root -p 数据库名 > E:\wamp\www\lamp175\lamp175.sql 2.在DO ...
- webpack中引用jquery
1.首先需要添加项目中jquery的依赖 npm install jquery --save-dev 2.参考配置代码: var webpack = require("webpack&quo ...