1、进程、线程、管程

  1. 进程

系统中运行的一个应用程序就是一个进程,每一个进程都有它自己的内存空间和系统资源。

  1. 线程

也被称为轻量级进程,在同一个进程内基本会有1一个或多个线程,是大多数操作系统进行调度的基本单元。

  1. 管程

Monitor(监视器),也就是我们平时说的锁。Monitor其实是一种同步机制,他的义务是保证(同一时间)只有一个线程可以访问被保护的数据和代码。JVM中同步是基于进入和退出监视器对象(Monitor,管程对象)来实现的,每个对象实例都会有一个Monitor对象,Monitor对象会和Java对象一同创建并销毁,它底层是由C++语言来实现的。

2、多线程并行和并发的区别?

  1. 并行:是在不同实体上的多个事件,是在多台处理器上同时处理多个任务,同一时刻,大家都真的在做事情,你做你的,我做我的。
  2. 并发:是在同一实体上的多个事件,是在同一台处理器上“同时”处理多个任务,同一时刻,其实是只有一个事件在发生。

3、用户线程和守护线程
Java线程分为用户线程和守护线程

  • 用户线程:是系统的工作线程,它会完成这个程序需要完成的业务操作。
  • 守护线程:是一种特殊的线程,为其他线程服务的,在后台默默地完成一些系统性的服务,比如垃圾回收线程。
  • 线程的daemon属性为:
    • true表示是守护线程
    • false表示是用户线程

CompletableFuture

FutureCallable接口
Future接口(FutureTask实现类)定义了操作异步任务执行一些方法,如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕等。(异步:可以被叫停,可以被取消)

一句话:Future接口可以为主线程开一个分支任务,专门为主线程处理耗时和费力的复杂业务。
image.png


比如主线程让一个子线程去执行任务,子线程可能比较耗时,启动子线程开始执行任务后,主线程就去做其他事情了,过了一会才去获取子任务的执行结果。

有个目的:异步多线程任务执行且有返回结果,三个特点:多线程/有返回/异步任务(班长作为老师去买水作为新启动的异步多线程任务且买到水有结果返回)
image.png

参考文档