这里有新鲜出炉的 Java 并发编程示例,程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称.
下面小编就为大家带来一篇基于 java 线程的几种状态 (详解).小编觉得挺不错的,现在就想给大家,也给大家做个参考.一起跟随小编过来看看吧
线程可以有六种状态:
1.New(新创建)
2.Runnable(可运行)(运行)
3.Blocked(被阻塞)
4.Waiting(等待)
5.Timed waiting(计时等待)
6.Terminated(被终止)
新创建线程:
当用 new 操作符创建一个新线程时,如 new Thread(r),该线程还没有开始运行,它的当前状态为 new,在线程运行之前还有一些基础工作要做.
可运行线程:
一旦线程调用 start 方法,线程处于 runnable 状态.在这个状态下的线程可能正在运行也可能没有运行(也就是说 Java 规范中正在运行的线程仍然处于可运行状态).在线程运行之后或者从阻塞,等待或睡眠状态回来后,也返回到可运行状态.
被阻塞线程:
这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的 synchronized 块的执行释放, 或者可重入的 synchronized 块里别人调用 wait() 方法, 也就是线程在等待进入临界区.
等待线程:
这个状态下是指线程拥有了某个锁之后, 调用了它的 wait 方法, 或者线程调用了 join 方法 join 了另外的线程, 等待被他 join 的线程执行结束的状态.这里要区分阻塞状态 和等待状态的区别, 一个是在临界点外面等待进入, 一个是在临界点里面 wait.
计时等待线程:
当线程调用带有超时参数的方法时会导致线程进入计时等待状态,带有超市参数的方法有 Thread.sleep,Object.wait,Thread.join,Lock.tryLock 以及 Condition.await 的计时版.
被终止的线程:
1)线程因为 run 方法正常退出而自然死亡.
2)因为一个没有捕获的异常终止了 run 方法而意外死亡.
线程状态之间的转换:
以上这篇基于 java 线程的几种状态 (详解) 就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持 PHPERZ.
来源: http://www.phperz.com/article/18/0118/353703.html