黑马程序员技术交流社区

标题: 线程的六种状态 [打印本页]

作者: 棕榈e人    时间: 2014-8-23 22:56
标题: 线程的六种状态
1.初始状态:创建Thread对象,一、让需要调用的类继承Thread,复写run方法,直接以多态的形式创建线程;二、先让要调用的类去实现Runnable接口,复      写run方法,然后创建Thread类;创建完成即处于初始状态
2.可运行状态:当线程(创建的Thread类)启动start方法时,就进入了可运行状态,此时需要得到cup赋予的时间片,才能执行代码,进入下一状态
3.运行状态:当线程获得cup提供的时间片,也就得到了,执行的权利,此时正在执行,处于运行状态
4.阻塞状态:先了解sleep方法,join方法,yield方法;sleep是静态方法,在某个线程中调用此方法,该线程就会休眠,可以设置休眠时间,其他线程按cup分配     执行;join方法是在当前线程中加入一线程(T),当T执行完毕,当前线程才能执行;yield是静态方法,当线程调用此方法后,就不会继续执行,而是将执行     权利让给具有相同优先级的其他线程,调用这些方法后,暂时放弃执行权的线程就处于阻塞状态
5.终止状态:线程执行完毕
6.锁池状态:当使用线程同步技术时,可以创建对象互斥锁,当其中一个线程得到执行权,且synchronized语句块没有执行完毕,那么其他同步线程暂时无法获       得执行权,此时就处于锁池状态
7.等待队列状态:线程同步,可能出现死锁的情况,此时会用到wait方法和notify方法,当某线程调用wait方法,该线程就会放弃执行,处于等待状态,直到另一      线程唤醒他

作者: 优乐    时间: 2014-8-24 13:43
总结的很好啊
作者: ┣┫流枫    时间: 2014-8-24 22:19
这是对于java设计模式而言,对于操作系统来说,不同的书籍有不同的划分,什么三状态图,五状态图,七状态图。。。 建议楼主画图表示,更直观,从那个状态可以到那个状态一目了然,更易了解,对于只专心java而言,这些够了,但是通义的说线程就这几种状态,(陋建)
作者: zuochbd    时间: 2014-8-24 22:52
多数操作系统原理教材对 进程/线程 状态一般会有详细的解释.
比如, 阻塞态和挂起态有什么不同之类.

不同的系统对 进程/线程 的状态有不同的规定.
对JVM而言, 其在Thread类中写得很明白, 这六种状态:
NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED.
作者: dhgcy    时间: 2014-8-25 11:21
内容不错,条理很清晰
作者: 坤儿    时间: 2014-8-25 12:10
总结的很好
作者: 赵哲成    时间: 2014-8-25 12:17
对我的学习有很大的帮助!
作者: 木易在他乡    时间: 2014-8-25 12:23
总结的不错,既然synchronized可以形成锁池,为什么还要wait()?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2