前言:

本文内容:CUP密集型和IO密集型、函数型接口和断定型接口、消费型接口和供给型接口

推荐免费JUC并发编程视频:【狂神说Java】JUC并发编程最新版通俗易懂_哔哩哔哩_bilibili

CUP密集型和IO密集型

最大线程该如何设置!

  1. CPU密集型(根据CPU核心数设置)

    1
    Runtime.getRuntime().availableProcessors(); // 获取CPU核数
  2. IO密集型(大于程序中十分耗费资源的的IO线程数量即可)

函数型接口和断定型接口

必须要掌握:lambda表达式、链式编程、函数式接口、Stream流式计算

函数式接口概述

函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。

函数式接口可以被隐式转换为 lambda 表达式。

Function函数型接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.jokerdig.function;

import java.util.function.Function;

/**
* @author Joker大雄
* @data 2022/8/24 - 10:11
**/
// Function 函数型接口 有一个输入参数,有一个输出
// 只要是函数式接口,可以使用lambda表达式简化
public class Demo01 {
public static void main(String[] args) {
// 工具类 输出输入的值
// Function function = new Function<String,String>() {
// @Override
// public String apply(String str) {
// return str;
// }
// };
// lambda 表达式 简化
// Function function = (str)->{return str;};
// 再简化
Function function = (str)->str;
System.out.println(function.apply("jokerdig"));
}
}

运行结果

1
2
3
jokerdig

Process finished with exit code 0

Predicate断定型接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.jokerdig.function;

import java.util.function.Predicate;

/**
* @author Joker大雄
* @data 2022/8/24 - 10:20
**/
// Predicate 断定型接口:有一个输入参数,返回值只能是布尔值
public class Demo02 {
public static void main(String[] args) {
// Predicate predicate = new Predicate<String>() {
// @Override
// public boolean test(String str) {
// return str.isEmpty();
// }
// };
// lambda 表达式简化
// Predicate<String> predicate = (str)->{return str.isEmpty();};
// 再简化
// Predicate<String> predicate = (str)->str.isEmpty();
// 继续简化
Predicate<String> predicate = String :: isEmpty;
System.out.println(predicate.test("jokerdig"));
}
}

运行结果

1
2
3
false

Process finished with exit code 0

消费型接口和供给型接口

Consumer消费型接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.jokerdig.function;

import java.util.function.Consumer;

/**
* @author Joker大雄
* @data 2022/8/24 - 10:37
**/
// Consumer 消费型接口 传入参数,没有返回值
public class Demo03 {
public static void main(String[] args) {
// Consumer<String> consumer = new Consumer<String>() {
// @Override
// public void accept(String str) {
// System.out.println(str);
// }
// };
// 简化
// Consumer<String> consumer = (str)->{
// System.out.println(str);
// };
// 再简化
Consumer<String> consumer = (str)-> System.out.println(str);
consumer.accept("jokerdig");
}
}

运行结果

1
2
3
jokerdig

Process finished with exit code 0

Supplier供给型接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.jokerdig.function;

import java.util.function.Supplier;

/**
* @author Joker大雄
* @data 2022/8/24 - 10:44
**/
// Supplier 供给型接口 没有传入参数,只有返回值
public class Demo04 {
public static void main(String[] args) {
// Supplier supplier = new Supplier<Integer>() {
// @Override
// public Integer get() {
// return 1024;
// }
// };
// 简化
// Supplier<Integer> supplier = ()->{return 1024;};
// 再简化
Supplier<Integer> supplier = () -> 1024;
System.out.println(supplier.get());
}
}

运行结果

1
2
3
1024

Process finished with exit code 0