进程

一个独立的正在执行的程序

线程

一个进程的最基本的执行单位
若将进程类比为社会中独立运行的实体,比如学校、医院、工厂,那么线程则可以理解为在实体中执行各自事务的人,比如老师,学生,医生,工人

多线程

在同一个进程(即应用程序)中同时执行多个线程,提高了CPU的使用率
需要注意

  1. 一个CPU,在同一个时间点,只能有一个线程在执行
  2. 多线程不能提高效率,反而会降低效率,但是可以提高CPU的使用率(线程来回切换,CPU则一直工作,没有休息时间)
  3. 一个进程如果有多条执行路径,则称为多线程程序
  4. Java虚拟机的启动至少开启了两条线程,主线程和垃圾回收线程
  5. 线程可以理解为进程的子任务

串行流 & 并行流

在日常开发中,经常会需要使用并行处理的场景来缩短执行时间(对于计算机程序整体性能来说其实并没有提高,线程之间切换也是有成本的,但是对于时间感受来说,执行时间会变短,对于人的感知来说是提高了效率),JDK8的并行流就是一种简单有效的多线程处理模式,示例如下

// 串行流
public static void main(String[] args) {
    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    list.stream().forEach(i -> {
        System.out.println(Thread.currentThread().getId() + " process: " + i);
    });
}
// 输出结果
1 process: 1
1 process: 2
1 process: 3
1 process: 4
1 process: 5
1 process: 6
1 process: 7
1 process: 8
1 process: 9
1 process: 10

// 并行流
public static void main(String[] args) {
    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    list.parallelStream().forEach(i -> {
        System.out.println(Thread.currentThread().getId() + " process: " + i);
    });
}
// 输出结果
20 process: 10
15 process: 9
17 process: 2
20 process: 1
18 process: 5
15 process: 4
19 process: 8
16 process: 6
1 process: 7
14 process: 3


老污的猫
30 声望5 粉丝