1.JUC并发编程学习笔记(二)Lock锁(重点)2.JUC并发编程学习笔记(一)认知进程和线程3.JUC并发编程学习笔记(三)生产者和消费者问题4.JUC并发编程学习笔记(四)8锁现象5.JUC并发编程学习(五)集合类不安全6.JUC并发编程学习笔记(六)Callable(简单)7.JUC并发编程学习笔记(七)常用的辅助类8.JUC并发编程学习笔记(八)读写锁9.JUC并发编程学习笔记(九)阻塞队列10.JUC并发编程学习笔记(十)线程池(重点)
11.JUC并发编程学习(十一)四大函数式接口(必备)
12.JUC并发编程学习笔记(十二)Stream流式计算13.JUC并发编程学习(十三)ForkJoin14.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() { @Override public String apply(String str) { return str; } };
简化后:
Function ft = (str)->{return str;};
更加简化后:
Function ft = str->{return str;};
Predicate

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

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

- Supplier 供给者接口 没有参数只有一个返回值
- 同样可以简化
简化前:
Supplier stringSupplier = new Supplier<>() { @Override public String get() { return "我的世界"; } };
简化后:
Supplier stringSupplier = ()->{return "我的世界";};