A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© bingyu 中级黑马   /  2015-6-23 21:34  /  378 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

线程五个状态:
新建状态new
就绪状态 Runnable
运行状态Running
阻塞Blocked
死亡状态 Terminated

新建状态:创建一个线程对象后,该线程对象就处于新建状态,不能运行,JAVA虚拟机分配     
               了内存

就绪状态:调用start()方法后就进入就绪状态,有执行资格,等待执行权

运行状态:有执行资格执行权后就处于正在运行的状态,占用CPU时间片

阻塞状态:正在执行的线程在特殊情况下,会放弃CPU的使用权,进入阻塞状态
              1、锁被其他线程持有,等锁被释放后获取锁 进入就绪状态
              2、线程调用一个阻塞式的IO方法时,线程进入阻塞,要进入就绪状态,必须等到
                 这个阻塞IO方法返回值
              3、线程调用wait()方法,进入阻塞状态,想进入就绪状态就必须用
                 notify()/notifyAll()唤醒
              4、线程调用Thread.sleep(time)方法后也进入阻塞状态,必须等到time结束进入就
                 绪状态
                5、一个线程调用另一个线程的join()方法时,当前线程会进入阻塞状态,必须
                            等另一个加入的线程执行完成后此线程进入就绪状态

     重点:线程从阻塞状态只能进入就绪状态,不能直接进入运行状态,重新进入运行池,等待  
     系统的调度。
   
死亡状态:线程的run()方法执行完,或者线程抛出一个未捕获的异常(Exception)/错误(Error)  死亡线程不能再转换到其他状态

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马