一、进程与线程
1、什么是进程
进程是操作系统进行资源分配的最小单位,进程与进程之间是相互独立的。
2、什么线程
线程是cpu调度的最小单位,线程必须依赖于进程存在。一个进程至少要有一个线程,同一个进程内的线程可以共享内存。
二、并行和并发
1、并行
并行是指可以同时运行的任务数,这与cpu的核数相关。如食堂打饭的时候有四个窗口可以同时打饭,那么相对于打饭事件,他的并行数就是四。
2、并发
并发是指单位时间内能处理的任务数。如食堂打饭的时候四个窗口一分钟共为二十个人打完饭,那么相应的并发数则是 20人/min。
三、我们为什么要使用线程?
- 可以充分利用CPU资源;
- 加快用户响应时间;
- 使代码模块化、异步化、简单化。
四、使用多线程需要注意哪些?
- 线程之间的安全性;
- 线程之间的死锁;
- 线程过多会使服务器资源耗尽而死机。
五、线程的生命周期
推荐博客
线程有五种状态,分别为新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、运行(RUNNING)、死亡(DEAD)。
- 新建状态:新建一个线程对象(new Thread())。
- 可运行状态:线程的执行是通过CPU时间片轮转机制调度的,当通过start()方法启动一个线程之后,线程会进入可运行状态,等待CPU的调度,直到获得CPU的使用权。
- 运行状态:当线程得到CPU的使用权,线程进入运行状态,开始执行任务。
- 阻塞状态:线程在执行的过程中(即运行状态)因为某种原因而失去了CPU的使用权,线程就会进入阻塞状态。
- 死亡状态:当线程正常结束或者因异常退出run()方法的时候线程就会进入死亡状态。