关于JUC的知识,大致用10多篇文章来总结一下。本篇为第一篇。
JUC是什么
是java.util.concurrent在并发编程中使用的工具类
包括一下三个:
- juc.class
- juc.atomic.class
- juc.locks.class
进程与线程
1、进程、线程是什么
-
进程:具有独立功能的程序关于某个数据集合的一次运行活动。是基本的分配和执行单元。
-
线程:在一个进程中可以包含多个线程,至少包含一个线程。线程可以利用进程所有的资源。
-
进程与线程的区别:
- 进程是资源分配的基本单位,线程是独立调度的基本单位;
- 线程基本上不拥有资源,对它的调度开销要小很多
- 进程通信要通过IPC方式,线程通信可以通过共用同一进程的数据完成。
2、进程,线程举例
进程:电脑上开启不同的程序用于不同的功能
线程:word编辑文档时,有断电保护功能,即有断电保护的线程在编辑文档线程运行也运行,还有语法检查线程,在同一个word进程中。
3、线程状态
- 新建(new)
- 准备就绪(Runnable)
- 阻塞(Blocked)
- 一直等待(Waiting)
- 过时不候(Timed_waiting)
- 终结(Terminated)
4、wait和sleep的区别
都是使当前线程暂停
但wait执行时释放锁,而sleep则不释放锁
5、并发和并行的区别
- 并发:同一时间,不同线程访问同一资源
如:电商秒杀 - 并行:多项工作一起工作,之后一起汇总。
如:做饭,一边准备食料,一边烧水。