线程的六种状态

线程Thread在Java中具有六种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING和TERMINATED。NEW是尚未启动的状态。RUNNABLE表示线程可运行。BLOCKED是指线程等待监视器锁。WAITING和TIMED_WAITING涉及线程等待,如wait()和sleep()。TERMINATED表示线程已结束。线程状态可通过Thread.getState()获取。
摘要由CSDN通过智能技术生成

线程Thread具有六种状态,并且在任一刻只能是这6种状态中的某一种状态。并且这些状态可以通过java.lang.Thread.State来表示:

       线程的六种具体状态如下:

NEW
       尚未启动的线程的状态。当使用new一个新线程时,如new Thread(r),但还没有执行start(),线程还没有开始运行,这时线程的状态就是NEW。

RUNNABLE
       可运行线程的线程状态。当start()方法被调用时,线程就进入RUNNABLE状态。此时的线程可能正在运行,也可能没有运行

BLOCKED
       受阻塞并且正在等待监视器锁的某一线程的线程状态。
       以下的几种情况会使得线程进入阻塞状态:
      1.等待某个操作的返回,例如IO操作,该操作返回之前,线程不会继续下面的代码。
      2.等待某个“锁”,在其他线程或程序释放这个“锁”之前,线程不会继续执行。
      3.等待一定的触发条件。
      4.线程执行了sleep方法。
      5.线程被suspend()方法挂起。
      同样的一个被阻塞的线程在以下的几种情况下会被重新激活(即使其阻塞的条件的到了满足):
     1.执行了sleep()方法,睡眠时间已到。
     2.等待的其他线程或程序持有的“锁”已被释放。
     3.正在等待触发条件的线程,条件得到满足。
     4.执行了suspend()方法,被调用了resume()方法。
     5.等待的操作返回的线程,操作正确返回。

      WAITING
      等待线程的线程状态。线程因为调用了Object.wait()方法或着Thread.join()方法而未能运行,就会进入WAITING

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值