做网站建设的公司有哪些,深圳策划公司网站,wordpress the time,模拟百度搜索词进入网站“苦#xff1f; 何止是苦~~~~~” 本期内容来分享一下线程状态相关的知识哦#xff01;#xff01;#xff01;
对于进程来说#xff0c;进程是有两种状态的。
一种是就绪状态#xff1a;正在CPU上执行#xff0c;或者随时可以去CPU上执行的。
另一种是阻塞状态 何止是苦~~~~~” 本期内容来分享一下线程状态相关的知识哦
对于进程来说进程是有两种状态的。
一种是就绪状态正在CPU上执行或者随时可以去CPU上执行的。
另一种是阻塞状态暂时不能去CPU上执行的。
那么对于线程来说线程也是有状态的而且更加详细的分了六中状态那么接下来我们一起来了分别了解这六中状态吧。
状态一新建New
对于NEW状态来说虽然当前创建出了一个thread对象但是内核的线程还没有还没有调用start方法没有在内核中真正创建出thread对象的只有在调用start()方法之后内核才会真正创建出线程。 状态二可运行RUNNABLE
该状态表示线程正在CPU上运行或者随时可以去CPU上运行。 状态三阻塞Blocked
该状态是由线程之间由于锁竞争锁引起的阻塞状态。
public class Demo3 {private static Object locker1 new Object();public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(() - {synchronized(locker1) {while(true) {}}},t1);Thread t2 new Thread(() - {synchronized (locker1) {System.out.println(------);}},t2);t1.start();//确保t1执行sleep(100);t2.start();}
}这个我们可以借助idk下的一个工具进行查看。首先先找到jdk所在的路径然后点到bin目录下面去然后找到jconsole.exe运行jconsole,(在运行jconsole时确保你的程序在运行着)然后选择本地进程里面的你所运行着的代码文件名。之后点击连接然后点击不安全连接之后再点到线程那一栏找到你的线程的名称点进去就可以看见它的信息了。 那么上面我们看到线程t2是一个BLOCKED状态t1线程正在运行着就是RUNNABLE。
那么这个工具也是我们之后如果遇到线程之类的一些问题可以利用这个工具来查看线程的状态这样便于我们检查或者排除一些问题。 状态四等待WAITING
没有超时时间的等待由join/wait等引起的一种状态。 状态五 定时等待TIME_WAITING
有超时时间的等待比如sleep或者join带参数版本 状态六终止TERMINATED
当前Thread对象虽然还在但是内核的线程已经销毁了线程已经结束了 下面假设一堆人去银行办理业务为例有一个更清晰的了解 相信大家看见这个图之后有了多一些了解了解线程的这六种状态对于后续的多线程编程会有一定帮助的。
感谢你阅读这篇文章如果你觉得这篇文章对你有帮助请分享给你的朋友。同时欢迎在下方留言告诉我你的想法或提出任何问题。
好了本期节目就到这里了我们下期节目不见不散。