什么叫宣传类网站,做网页设计网站有哪些,岳阳网站开发网站运营哪家好,wordpress 文章 定时在Java中#xff0c;任何对象都有生命周期#xff0c;线程也不例外#xff0c;它也有自己的生命周期。当Thread对象创建完成时#xff0c;线程的生命周期便开始了#xff0c;当线程任务中代码正常执行完毕或者线程抛出一个未捕获的异常(Exception)或者错误(Error)时#…在Java中任何对象都有生命周期线程也不例外它也有自己的生命周期。当Thread对象创建完成时线程的生命周期便开始了当线程任务中代码正常执行完毕或者线程抛出一个未捕获的异常(Exception)或者错误(Error)时线程的生命周期便会结束。Java官方API将线程的整个生命周期分为六个状态分别是NEW(新建状态)、RUNNABLE(可运行状态)、BLOCKED(阻塞状态)、WAITING(等待状态)、TIMED_WAITING(定时等待状态)和TERMINATED(终止状态)。线程的不同状态表明了线程当前正在进行的活动在程序中通过一些操作可以使线程在不同状态之间转换如图1所示。图1 线程状态转换图图1中展示了线程各种状态的转换关系箭头方向表示可转换的方向。接下来针对线程生命周期中的六种状态分别进行详细讲解具体如下1NEW(新建状态)创建一个线程对象后该线程对象就处于新建状态此时它不能运行和其他Java对象一样仅仅由JVM为其分配了内存没有表现出任何线程的动态特征。2RUNNABLE(可运行状态)当新建状态下的线程对象调用了start()方法此时就会从新建状态进入可运行状态。从图10-10可以看出在RUNNABLE状态内部又可细分成两种状态READY(就绪状态)和RUNNING(运行状态)并且线程可以在这两个状态之间相互转换。● 就绪状态线程对象调用start()方法之后等待JVM的调度此时线程并没有运行● 运行状态线程对象获得JVM调度如果存在多个CPU那么允许多个线程并行运行。3BLOCKED(阻塞状态)处于运行状态的线程可能会因为某些原因失去CPU的执行权暂时停止运行进入阻塞状态。此时JVM不会给线程分配CPU直到线程重新进入就绪状态才有机会转换到运行状态。阻塞状态的线程只能先进入就绪状态不能直接进入运行状态。线程一般会在以下两种情况下进入阻塞状态● 当线程A运行过程中试图获取同步锁时却被线程B获取此时JVM把当前线程A存到对象的锁池中线程A就会进入阻塞状态● 当线程运行过程中发出IO请求时此时该线程也会进入阻塞状态。4WAITING(等待状态)当处于运行状态的线程调用了无时间参数限制的方法后如wait()、join()等方法就会将当前运行中的线程转换为等待状态。处于等待状态中的线程不能立即争夺CPU使用权必须等待其他线程执行特定的操作后才有机会再次争夺CPU使用权将等待状态的线程转换为运行状态。例如调用wait()方法而处于等待状态中的线程必须等待其他线程调用notify()或者notifyAll()方法唤醒当前等待中的线程调用join()方法而处于等待状态中的线程必须等待其他加入的线程终止。5TIMED_WAITING(定时等待状态)将运行状态中的线程转换为定时等待状态中的线程与转换为等待状态中的线程操作类似只是运行线程调用了有时间参数限制的方法如sleep(long millis)、wait(long timeout)、join(long millis)等方法。处于定时等待状态中的线程也不能立即争夺CPU使用权必须等待其他相关线程执行完特定的操作或者限时时间结束后才有机会再次争夺CPU使用权将定时等待状态的线程转换为运行状态。例如调用了wait(long timeout) 方法而处于等待状态中的线程需要通过其他线程调用notify()或者notifyAll()方法唤醒当前等待中的线程或者等待限时时间结束后也可以进行状态转换。6TERMINATED(终止状态)线程的run()方法、call()方法正常执行完毕或者线程抛出一个未捕获的异常(Exception)、错误(Error)线程就进入终止状态。一旦进入终止状态线程将不再拥有运行的资格也不能再转换到其他状态生命周期结束。猜你喜欢