前言
在java中线程池的概念也是非常重要,所以今天来聊一聊线程池。
一、线程和进程的区别?
进程:具有一定独立功能的程序,是操作系统进行资源分配和调度的单位。
线程:是进程的其中一个实体,是cpu调度和分派的基本单位,是比进程更小的可以独立运行的基本单位。
二、线程start和run方法的区别
线程对象调用run方法不开启线程,仅仅对象调用方法。
线程对象调用start开启线程,并让jvm调用run方法,在开启的线程中执行。
调用start方法可以启动线程,并且使得线程进入就绪状态,而run方法知识thread中的一个普通方法,还是在主线程中执行。
三、线程的状态
1,new创建状态,在生成线程对象,并没有调用该对象的start方法。
2,runnable就绪状态,当调用了线程对象的start方法之后,进入就绪状态,但是此时线程调度程序还没有把该线程设置成当前线程。
3,running运行状态,线程调度程序将处于就绪状态的线程设置为当前线程,此时线程进入运行状态,开始运行run函数中的代码。
4,阻塞状态,阻塞状态时线程因为某种原因放弃cpu使用权,暂时停止运行,直到线程进入就绪状态。阻塞分为wait、sleep、获取同步锁失败。
5,死亡状态,线程执行完了或者因异常退出了run方法,该线程结束生命周期。
总结
线程是一个很重要的面试点,希望大家好好学习。
|