全球旧事资料 分类
运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。3、运行状态:线程调度程序从可运行池中选择一个线程作为当前线程时线程所处的状态。这也是线程进入运行状态的唯一一种方式。4、等待阻塞睡眠状态:这是线程有资格运行时它所处的状态。实际上这个三状态组合为一种,其共同点是:线程仍旧是活的,但是当前没有条件运行。换句话说,它是可运行的,但是如果某件事件出现,他可能返回到可运行状态。5、死亡态:当线程的ru
方法完成时就认为它死去。这个线程对象也许是活的,但是,它已经不是一个单独执行的线程。线程一旦死亡,就不能复生。如果在一个死去的线程上调用start方法,会抛出javala
gIllegalThreadStateExceptio
异常。有关详细状态转换图可以参看本人的“Java多线程编程总结”中的图二、阻止线程执行对于线程的阻止,考虑一下三个方面,不考虑IO阻塞的情况:睡眠;等待;因为需要一个对象的锁定而被阻塞。1、睡眠
fThreadsleeplo
gmillis和Threadsleeplo
gmillisi
t
a
os静态方法强制当前正在执行的线程休眠(暂停执行)以“减慢线程”。,当线程睡眠时,它入睡在某个地方,在苏醒之前不会返回到可运行状态。当睡眠时间到期,则返回到可运行状态。线程睡眠的原因:线程执行太快,或者需要强制进入下一轮,因为Java规范不保证合理的轮换。睡眠的实现:调用静态方法。tryThreadsleep123catchI
terruptedExceptio
eepri
tStackTrace睡眠的位置:为了让其他线程有机会执行,可以将Threadsleep的调用放线程ru
之内。这样才能保证该线程执行过程中会睡眠。例如,在前面的例子中,将一个耗时的操作改为睡眠,以减慢线程的执行。可以这么写:publicvoidru
fori
ti0i5i很耗时的操作,用来减慢线程的执行forlo
gk0k100000000ktryThreadsleep3catchI
terruptedExceptio
eepri
tStackTraceSystemoutpri
tl
thisgetName
好听全球资料 返回顶部