1.进程和线程的区别
进程就是一个程序从创建,运行,到消亡的过程
一个进程可以创建多个线程,每个线程都有自己的程序计数器,本地方法栈,虚拟机栈
2.说一下线程的生命周期?线程有哪几种状态?
java线程在运行的生命周期中的指定时刻只能处于下面集中不同状态的其中一种状态。
线程有5大状态:创建,就绪,运行,堵塞,死亡。
创建(new)就是,线程被创建,但是还没有调用start()方法
就绪(runnable):调用了start()方法,但是没有获取到CPU的使用权
运行(running):获取到了CPU的使用权,执行程序代码
阻塞(Blocked)状态:阻塞状态是线程因为某种原因放弃了CPU使用权,停止运行。直到线程进入就绪状态,才有机会转到运行状态
阻塞又可以分为:
-
等待阻塞:运行的线程执行wait方法,该线程会释放占用的所有资源,JVM会把该线程放入“等待池”中。进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify或notifyAll方法才能被唤醒,wait是object类的方法
-
同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入“锁池”中。
-
其他阻塞:运行的线程执行sleep或join方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep状态超时、join等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。sleep是Thread类的方法。
死亡状态(Dead):线程执行完了,或者因为异常退出了run方法,该线程结束生命周期。
3.
标签:状态,面试题,阻塞,线程,相关,就绪,方法,运行 来源: https://www.cnblogs.com/XiaoYeH/p/16027818.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。