这里写自定义目录标题
Stream流并发编程
因为是基于stream流实现,所以JDK版本至少在8(包含)以上
package com.example.parallel;
import java.util.ArrayList;
import java.util.List;
/**
* @Author urtix
* @Date 2020/8/19 17:47
* @Description 并行执行多任务
*/
public class ExecuteTask {
/*
* 思路:
* 完全可以使用stream流进行多线程并行处理,优势非常大
* 对于难以适用的情况,可以自己创建函数式接口使用,以此来满足各种情况
*/
public static void main(String[] args) {
List<Runnable> tasks = new ArrayList<>();
tasks.add(ExecuteTask::task1);
tasks.add(ExecuteTask::task2);
tasks.add(ExecuteTask::task3);
tasks.add(ExecuteTask::task4);
tasks.add(ExecuteTask::task5);
// 利用forEach触发Stream的终止操作
tasks.parallelStream().forEach(Runnable::run);
}
private static void task1() {
System.out.printf("任务一, 线程id: %s %s", Thread.currentThread().getId(), "\n");
}
private static void task2() {
System.out.printf("任务二, 线程id: %s %s", Thread.currentThread().getId(), "\n");
}
private static void task3() {
System.out.printf("任务三, 线程id: %s %s", Thread.currentThread().getId(), "\n");
}
private static void task4() {
System.out.printf("任务四, 线程id: %s %s", Thread.currentThread().getId(), "\n");
}
private static void task5() {
System.out.printf("任务五, 线程id: %s %s", Thread.currentThread().getId(), "\n");
}
}
执行结果:
任务三, 线程id: 1
任务四, 线程id: 22
任务五, 线程id: 23
任务一, 线程id: 21
任务二, 线程id: 20
(本文完!转载需标注出处,并附本文链接)