1、什么时JUC
JUC就是java.util .concurrent工具包的简称。这是一个处理线程的工具包。
2、什么是进程与线程
- 进程:进程是程序的一次执行,进程是一个程序及其数据在处理机上顺序执行时所发生的活动,进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
简单来说:一个进程包含多个线程,至少包含一个。
- 线程:线程作为资源调度的基本单位,是程序的执行单元,执行路径(单线程:一条执行路径,多线程:多条执行路径)。是程序使用CPU的最基本单位。
- java默认有几个线程? 2个 分别是main线程和gc线程(垃圾回收线程);
对于java而言看起线程的三种方式: Thread、Runnable、Callable。
java可以开启线程吗?
3、什么是并发与并行
- 并发:多个线程操作一个资源
- 并行:(多核情况下,多个线程同时执行)
并发编程的本质:充分利用CPU资源
4、线程有几个状态
public enum State {
//新生线程
NEW,
//运行
RUNNABLE,
//阻塞
BLOCKED,
//死死等待
WAITING,
//过时不候
TIMED_WAITING,
//终止
TERMINATED;
}
5、wait与sleep区别
- 来自不同的类: await来自Object类;Sleep来自Thread;
- 关于锁的释放:await会释放锁;Sleep不会释放锁;
- 适用范围不同:await只能在同步代码块中适用;Sleep可以在任意地方适用;
- 是否需要捕获异常:await不需要捕获异常;Sleep需要捕获异常;