[java][JDK]JDK8新特性

server/2024/11/13 11:55:04/

使用匿名内部类存在的问题

        当需要启动一个线程去完成任务时,通常会通过 Runnable 接口来定义任务内容,并使用 Thread 类来启动该线程。

传统写法,代码如下:

java">public class Demo01LambdaIntro {public static void main(String[] args) {new Thread(new Runnable() {@Overridepublic void run() {System.out.println("新线程任务执行!");}}).start();}
}

        由于面向对象的语法要求,首先创建一个 Runnable 接口的匿名内部类对象来指定线程要执行的任务内容,再将其交给一个线程来启动。

代码分析:

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

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

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

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

        必须覆盖重写抽象 run 方法,所以方法名称、方法参数、方法返回值不得不再写一遍,且不能写错而实际上,似乎只有方法体才是关键所在。

Lambda体验

Lambda是一个匿名函数,可以理解为一段可以传递的代码。

Lambda表达式写法,代码如下:

借助Java 8的全新语法,上述 Runnable 接口的匿名内部类写法可以通过更简单的Lambda表达式达到相同的效果

java">public class Demo01LambdaIntro {public static void main(String[] args) {new Thread(() -> System.out.println("新线程任务执行!")).start(); // 启动线程}}

        这段代码和刚才的执行效果是完全一样的,可以在JDK 8或更高的编译级别下通过。从代码的语义中可以看出:我们启动了一个线程,而线程任务的内容以一种更加简洁的形式被指定。

我们只需要将要执行的代码放到一个Lambda表达式中,不需要定义类,不需要创建对象。

Lambda的优点

        简化匿名内部类的使用,语法更加简单。


http://www.ppmy.cn/server/140864.html

相关文章

swagger、Postman、Test测试都能过,代码没问题但项目仍然不成功

swagger、Postman、Test测试都能过,代码没问题但项目仍然不成功 前端缓存问题!!!!!!!!!!!! swagger、Postman、test测试…

【GCN】 代码详解 (1) 如何运行【pytorch】可运行版本

Graph Convolutional Networks 代码详解 前言0.引言1.环境配置2. 代码的运行2.1 报错处理2.2 运行结果 3.总结 前言 在前文中,已经对图卷积神经网络(Graph Convolutional Neural Networks, GCN)的理论基础进行了深入探讨。接下来的章节将会进…

Hive中查看字段中是否包含某些字符串的函数

CREATE TABLE employee (name STRING,age INT );INSERT INTO employee VALUES(Alice, 25),(Bob, 30),(Charlie, 35),(David, 40); 首先我们在hive中创建表插入数据进行测试 方案一:like select * from employee where name like %i%; #返回name中包含i的数据 li…

linux盘扩容缩容

这里写目录标题 文件格式介绍问题:当根盘满了过后怎么办?解决方式: Xfs文件格式缩容扩容1. 备份2. 卸载home3. 缩容home(home盘为xfs文件格式)4. 扩容 /5. 恢复home备份 Ext4文件格式缩容扩容1. 备份(可选&…

泉州市工业和信息化局关于开展排查运维安全管理系统安全漏洞的通知

文章目录 引言附件1: 受影响版本和修复方案附件2:漏洞排查处置情况反馈表引言 接国家网络与信息安全信息通报中心通报,一款由北京圣博润高新技术股份有限公司研发的运维安全管理系统(俗称堡垒机)存在命令执行漏洞(CNVD-C-2024-781563、NVDB-CNVDB-2024768604)。攻击者可…

kaggle学习 eloData项目(1)-数据校验

文章目录 kaggle学习 eloData项目(1)-数据校验(1) 数据基本情况查看(2) 数据校验(3) 数据探究 小结 kaggle学习 eloData项目(1)-数据校验 不能懈怠&#xff0…

【MySQL】数据的增删查改

文章目录 1. 插入数据(Create)1.1 全列插入1.2 指定列插入1.3 多行数据插入1.4 插入否则更新1.5 替换 2. 读取数据(Retrieve)2.1 select列2.2 where条件2.3 结果排序2.4 筛选分页结果 3. 修改数据(Update)4. 删除数据(delete)4.1 删除数据4.2 截断表 5. 插入查询的结果6. 分组与…

工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置

工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置...-CSDN博客 工作流初始错误 泛微提交流程提示_泛微OA 工作流WebService接口使用说明 工作流初始错误 泛微提交流程提示_泛微OA 工作流WebService接口使用说明-CSDN博客 工作…