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 ...
随机推荐
- 引入代码来源:深入分析markdown-it-quote插件的魔法
引入代码来源:深入分析markdown-it-quote插件的魔法 markdown-it-quote是一个用于markdown-it的插件,支持多种代码围栏功能. 这是 SourceCodeTrac ...
- 王道oj/problem21
网址:oj.lgwenda.problem/21 思路:先序遍历,中序遍历,后序遍历用递归实现:层序遍历用一个链队实现,出队一个元素,顺序入队他的左孩子和右孩子 代码: #define _CRT_SE ...
- F-Beta-Score
F1-Score相关概念 F1分数(F1 Score),是统计学中用来衡量二分类(或多任务二分类)模型精确度的一种指标.它同时兼顾了分类模型的准确率和召回率. F1分数可以看作是模型准确率和召回率的一 ...
- 后缀数组C++详解
后缀定义 "后缀i"代表以第i个字符开头的后缀,存储是用i代表字符串s的后缀s[i...n] 后缀数组是什么? 后缀数组(Suffix Array)主要关系到两个数组:sa 和 r ...
- opencv-python 车牌检测和识别
首先利用级联分类器把车牌位置找到取出来,然后用ocr进行车牌识别. 1 OCR之Tesseract安装 Tesseract安装可以参考这个链接: https://blog.csdn.net/m0_53 ...
- chatglm2-6b模型在9n-triton中部署并集成至langchain实践
一.前言 近期, ChatGLM-6B 的第二代版本ChatGLM2-6B已经正式发布,引入了如下新特性: ①. 基座模型升级,性能更强大,在中文C-Eval榜单中,以51.7分位列第6: ②. 支持 ...
- ceph分布式存储软件pgs inconsistent
Ceph是一个开源的分布式存储系统,它提供了高性能.高可靠性以及高扩展性.Ceph的设计理念是基于对象存储模型,通过将数据分割成多个对象并存储在不同的节点上,实现数据的分布式存储和访问. Ceph的核 ...
- 十年磨一剑的华为云GES,高明在哪
本文分享自华为云社区<华为云GES:十年磨一剑,打造业界一流的云原生分布式图数据库>,作者:GES图引擎服务小图 . 1.浅谈云原生图数据库 图数据库(graph database)是一个 ...
- KRPANO PR10最新激活码(破解)分享
KRPano pr10最新版本激活码下载地址: http://pan.baidu.com/s/1qYv2vO4 适用于最新pr10以及之前版本,解压密码为KRPano技术解密群群号:551278936 ...
- 你知道Golang的模板怎么用吗?带你了解动态文本的生成!
Golang Template Go语言中的Go Template是一种用于生成文本输出的简单而强大的模板引擎.它提供了一种灵活的方式来生成各种格式的文本,例如HTML.XML.JSON等. Go T ...