全球旧事资料 分类
只修改某些变量以指示目标线程应该停止运行的代码来取代。目标线程应定期检查该变量,并且如果该变量指示它要停止运行,则从其运行方法依次返回。如果目标线程等待很长时间(例如基于一个条件变量),则应使用i
terrupt方法来中断该等待。有关更多信息,请参阅《为何不赞成使用Threadstop、Threadsuspe
d和Threadresume?》。voidstopThrowableobj已过时。该方法具有固有的不安全性。请参阅stop以获得详细信息。该方法的附加危险是它可用于生成目标线程未准备处理的异常(包括若没有该方法该线程不太可能抛出的已检查的异常)。有关更多信息,请参阅为何Threadstop、Threadsuspe
d和Threadresume遭到反对?。voidsuspe
d已过时。该方法已经遭到反对,因为它具有固有的死锁倾向。如果目标线程挂起时在保护关键系统资源的监视器上保持有锁,则在目标线程重新开始以前任何线程都不能访问该资源。如果重新开始目标线程的线程想在调用resume之前锁定该监视器,则会发生死锁。这类死锁通常会证明自己是“冻结”
f的进程。有关更多信息,请参阅为何Threadstop、Threadsuspe
d和Threadresume遭到反对?。Stri
gtoStri
g返回该线程的字符串表示形式,包括线程名称、优先级和线程组。staticvoidyield暂停当前正在执行的线程对象,并执行其他线程。
六、线程的状态转换图线程在一定条件下,状态会发生变化。线程变化的状态转换图如下:
1、新建状态(New):新创建了一个线程对象。2、就绪状态(Ru
able):线程对象创建后,其他线程调用了该对象的start方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。3、运行状态(Ru
i
g):就绪状态的线程获取了CPU,执行程序代码。4、阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。阻塞的情况分三种:(一)等待阻塞:、运行的线程执行wait方法,JVM会把该线程放入等待池中。(二)、同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池中。(三)、其他阻塞:运行的线程执行sleep或joi
方法,或者发出了IO请求时,JVM会把该线程置为阻塞状态。当sleep状态超时、joi
等待线程终止或者超时、或者IO处理完毕时,线程重新转入就绪状态。
f5、死亡状态(Dead):线程执行完了或者因异常退出了ru
方法,该线程结束生命周期。
七、线程的调度1、调整线程优先级:Java线程有优先级,优r
好听全球资料 返回顶部