JUC并发编程学习(十一)四大函数式接口(必备)
四大函数式接口(必备)
程序员:泛型、反射、注解、枚举
新时代程序员:lambda表达式、链式编程、函数式接口、Stream流式计算
函数式接口:只有一个方法的接口
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
//@FunctionalInterface 函数式接口,超级多
//简化编程模型,在新版本的框架中大量应用!
//foreach(消费者类的函数式接口)

四大函数式接口:Consumer、Function、Predicate、Supplier
Function

- Function 函数式接口 R apply(T t); 输入一个T类型的参数,返回一个R类型的值
- 只要是函数式接口都可以用lambda表达式简化
简化前:
Function ft = new Function<String,String>() {
@Override
public String apply(String str) {
return str;
}
};
简化后:
Function ft = (str)->{return str;};
更加简化后:
Function ft = str->{return str;};
Predicate

Predicate 断定型接口 有一个输入参数,返回类型只能是boolean值
同样是一个函数式接口,可以简化
简化前:
Predicate<String> pr = new Predicate<String>() {
@Override
public boolean test(String str) {
return str.isEmpty();
}
};
简化后:
Predicate<String> pr = str ->{return str.isEmpty();};
Comsumer

- Comsumer 消费者接口 有一个输入参数,没有返回值
- 同样可以简化
简化前:
Consumer<String> stringConsumer = new Consumer<>() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
简化后:
Consumer<String> stringConsumer = str ->{
System.out.println(str);
};
Supplier

- Supplier 供给者接口 没有参数只有一个返回值
- 同样可以简化
简化前:
Supplier<String> stringSupplier = new Supplier<>() {
@Override
public String get() {
return "我的世界";
}
};
简化后:
Supplier<String> stringSupplier = ()->{return "我的世界";};
JUC并发编程学习(十一)四大函数式接口(必备)的更多相关文章
- JUC并发编程学习笔记
JUC并发编程学习笔记 狂神JUC并发编程 总的来说还可以,学到一些新知识,但很多是学过的了,深入的部分不多. 线程与进程 进程:一个程序,程序的集合,比如一个音乐播发器,QQ程序等.一个进程往往包含 ...
- 第46天学习打卡(四大函数式接口 Stream流式计算 ForkJoin 异步回调 JMM Volatile)
小结与扩展 池的最大的大小如何去设置! 了解:IO密集型,CPU密集型:(调优) //1.CPU密集型 几核就是几个线程 可以保持效率最高 //2.IO密集型判断你的程序中十分耗IO的线程,只要大于 ...
- JUC(7)四大函数式接口
文章目录 1.四大函数式接口(必须掌握) 1.1 function 1.2 Predicate 1.3 Consumer 1.4 Supplier 1.四大函数式接口(必须掌握) 1.lambda表达 ...
- JUC并发编程详解(通俗易懂)
一.JUC简介 在Java5.0提供了java.util.concurrent包,简称JUC,即Java并发编程工具包.JUC更好的支持高并发任务. 具体的有以下三个包: java.util.conc ...
- JUC并发编程
什么是JUC java.util.concurrent* public class Test1 { public static void main(String[] args) { //获取处理器核数 ...
- Java并发编程学习笔记
Java编程思想,并发编程学习笔记. 一.基本的线程机制 1.定义任务:Runnable接口 线程可以驱动任务,因此需要一种描述任务的方式,这可以由Runnable接口来提供.要想定义任务,只需实现R ...
- 并发编程学习笔记(15)----Executor框架的使用
Executor执行已提交的 Runnable 任务的对象.此接口提供一种将任务提交与每个任务将如何运行的机制(包括线程使用的细节.调度等)分离开来的方法.通常使用 Executor 而不是显式地创建 ...
- 并发编程学习笔记(14)----ThreadPoolExecutor(线程池)的使用及原理
1. 概述 1.1 什么是线程池 与jdbc连接池类似,在创建线程池或销毁线程时,会消耗大量的系统资源,因此在java中提出了线程池的概念,预先创建好固定数量的线程,当有任务需要线程去执行时,不用再去 ...
- 并发编程学习笔记(11)----FutureTask的使用及实现
1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ...
- 并发编程学习笔记(12)----Fork/Join框架
1. Fork/Join 的概念 Fork指的是将系统进程分成多个执行分支(线程),Join即是等待,当fork()方法创建了多个线程之后,需要等待这些分支执行完毕之后,才能得到最终的结果,因此joi ...
随机推荐
- Linux下Oracle单实例配置多监听
Oracle单实例配置多监听 一.前言 有时候我们项目中需要使用Oracle数据库,同时要需要不同的数据源,而Oracle不像Mysql那样直接建个库即可,Oracle是以账号为单位,可以理解为一个账 ...
- Python和PyTorch深入实现线性回归模型:一篇文章全面掌握基础机器学习技术
1. 简介 1.1 线性回归模型概述 线性回归是一种统计学中的预测分析,该方法用于建立两种或两种以上变量间的关系模型.线性回归使用最佳的拟合直线(也称为回归线)在独立(输入)变量和因变量(输出)之间建 ...
- AttributeError:module‘win32com.gen_py has no attribute ‘CLSIDToClassMap‘
解决方案如下: 1. 运行如下代码,找到文件所在位置 from win32com.client.gencache import EnsureDispatch import sys xl = Ensur ...
- 配置oracle DG
主库名称:prod1 使用asm存储数据 11.2.03 同一机器备库名称:dg 使用file存储数据 11.2.03 配置备库的参数文件cd $ORACLE_HOME/dbsvi initdg.or ...
- 【技术积累】Linux中的命令行【理论篇】【二】
ag命令 命令介绍 ag命令是一个用于在Linux系统中进行文本搜索的工具.它是基于Silver Searcher的改进版本,具有更快的搜索速度和更强大的功能. ag命令的基本用法是在指定的目录中搜索 ...
- buu-(ACTF新生赛2020)usualCrypt
base64的常用套路了 文件直接给base,我大胆盲猜base64: 先进sub-401080函数康康: 先看byte-40e0a0 这个很明显了,然后看上面的函数 进这连个地址发现是base64加 ...
- [ABC150E] Change a Little Bit
2023-03-10 题目 题目传送门 翻译 翻译 难度&重要性(1~10):7 题目来源 AtCoder 题目算法 数学,贪心 解题思路 显然 \(C_i\) 越小的位越早被修改越好.所以我 ...
- python flask 简单应用开发
转载请注明出处: Flask 是一个基于 Python 的微型 Web 框架,它提供了一组简洁而强大的工具和库,用于构建 Web 应用程序.Flask 的主要作用是帮助开发者快速搭建轻量级的.灵活的 ...
- ECharts图表动态修改series显示隐藏
目录 1.前言 2.思路 3.实现 1.前言 最近做的大数据平台,里面很多地方用到了ECharts,其中有个功能,要求将图表分组,根据用户选择的组,来确定ECharts要显示那些线条和柱子,也就是动态 ...
- C++算法之旅、04 基础篇 | 第一章
常用代码模板1--基础算法 - AcWing ios::sync_with_stdio(false) 提高 cin 读取速度,副作用是不能使用 scanf 数据输入规模大于一百万建议用scanf 快速 ...