java线程的六个状态
来源:互联网 发布:淘宝挂钩 编辑:程序博客网 时间:2024/06/05 00:16
在java的API中线程的六个状态:
1.新建状态(new):使用new创建一个线程对象,仅仅在堆内存中分配一个内存空间(和普通的创建对象一样),在调用start方法之前,在此状态下,线程没有启动,只是一个普通的线程对象。
Thread t=new Thread();//新建状态当在新建状态下,线程对象调用start方法,从新建状态进入可运行状态。
线程对象的start方法只能调用一次,否则报错。
2.可运行状态(runnable):分成两种状态:
(1)就绪状态:线程对象调用start()方法之后,等待JVM的调度(此时线程没有运行)
(2)运行状态:此时线程获得JVM的调度,如果存在多个CPU,那么允许多个线程并行运行;若只有一个,其他线程只能等待。
3.阻塞状态(blocked):正在运行的线程因为某些原因放弃CPU,暂时停止运行,就会进入阻塞状态。
进入阻塞状态后,JVM不会再给该线程分配CPU,直到线程重新进入就绪状态,才有机会进入运行状态
阻塞状态只能先进入就绪状态,不能直接进入运行状态
两种阻塞:
(1)当A线程处于运行过程中,试图要获取同步锁时,这时却被B线程获取了同步锁,此时JVM会把A存到对象的锁池中,A进入阻塞状态。
(2)当线程处于运行过程中,在此过程中有IO请求,此时线程进入阻塞状态,执行IO命令
4.等待状态(waiting):(无时限等待)处于等待状态的线程只能被其他线程唤醒。
当线程在运行过程中,调用了wait方法,此时线程处于等待状态,JVM将当前线程存入对象等待池中,等待被唤醒后进入就绪状态,等待被JVM再次调度。
5.计时等待状态(timed waiting):(使用带参数的wait和sleep方法,有时限等待)
(1)当线程在运行过程中,调用了wait(long time)方法,此时JVM把当前线程存入对象等待池中。
(2)当前线程执行了sleep(long time)方法
6.终止状态(terminated):表示线程终止,一旦终止,不能再重新启动
(1)正常执行完run方法,退出(正常死亡)
(2)遇到异常退出(程序中断)。(意外死亡)
##isAlive():判断当前线程是否还活着
void suspend():暂停线程
void resume():回复线程
void stop():结束当前线程
线程生命周期结束后,但对象还存在,等待垃圾回收器回收。
阅读全文
0 0
- java线程的六个状态
- Java学习疑点(4)--线程的六个状态以及其安全性问题的个例解析
- java线程的状态
- java线程的状态
- java的线程状态
- Java线程的状态
- Java 线程的状态
- java线程的状态
- java线程的状态
- java线程的状态
- Java线程的状态
- java线程的状态
- java线程的状态
- java线程的状态
- Java线程状态、状态转换的条件
- JAVA线程对象的状态
- Java线程的状态转换
- JAVA:线程状态的转换
- How to enable IOMMU in Fedora
- Android控件 如何把控
- CSS选择器
- Java Io流总结
- Angular2 学习
- java线程的六个状态
- SQL--锁
- Mybatis 之List<?>传参的注意事项和原理
- Source Insight4.0问题总结
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)-831C Jury Marks(思维)
- C语言的奇技淫巧
- hdu1711 KMP
- 【PAT】【Advanced Level】1013. Battle Over Cities (25)
- 详解C中volatile关键字