JUC-01 线程的创建和状态转换

本次我们主要讲三个问题

  1. 线程是什么?
  2. 线程有哪些状态?各状态间的转换了解吗?
  3. 创建线程的3种方法你都了解吗?

1. 线程是什么?(了解即可)

进程:

进程是一个具有一定独立功能的程序在一个数据集合上依次动态执行的过程。是一个正在执行的程序的实例,包括程序计数器、寄存器和程序变量的当前值等。

线程:

线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。

示意图:

JUC-01 线程的创建和状态转换_第1张图片

2. 线程各状态间的转换了解吗?

这里有哪些状态呢?

初始、等待、超时等待、(运行中、就绪)、终止、阻塞。

状态流转

JUC-01 线程的创建和状态转换_第2张图片

Sleep: 是简单的线程睡眠。 public static native void sleep(long millis) throws InterruptedException;

Yiled:从CPU上先离开,先让出一下,返回就绪状态。进入等待队列再等调度进行调用,不管后面其他线程能不能抢到;

Join:将其他线程加入进来,等加进来的运行完再运行(sleep再久也没用),一般用来按顺序

wait() 和 notify()是Object类的,等待,通知,不展开。

3.创建线程的3种方法你都了解吗?

1 继承Thread类。

2 实现Runnable

3 创建线程池 ThreadPoolExecutor

使用Callable和Future创建线程。(不展开)

JUC-01 线程的创建和状态转换_第3张图片

JUC-01 线程的创建和状态转换_第4张图片

JUC-01 线程的创建和状态转换_第5张图片

执行结果:

JUC-01 线程的创建和状态转换_第6张图片

好的,本文也有视频版哦,可以直接在以下平台进行搜索,欢迎大家关注我,持续更新!!


更多 视频 内容请
     1. 抖音       搜索关注 “程序员一棵树”
     2. B 站       搜索关注 “程序员一棵树”
 

你可能感兴趣的:(JUC,面试,java多线程,面试,JUC,java多线程,高并发,java面试题)