一个Thread对象在它的生命周期中会处于各种不同的状态
所有“可运行的”线程根据不同的优先级,放在不同的线程池里。
当一个线程结束运行并终止时,它就不能再运行了。 可以用一个指示run()方法的退出标志来停止一个线程。
使用isAlive()方法用来确定一个线程是否仍是活的 “活着的线程”表示该线程已经开始,而且还没有死亡 活着的线程并不意味着线程正在运行; 对于一个已开始运行但还没有完成任务的线程,这个方法返回true。
线程在创建时,继承了父类的优先级。线程创建后,可以在任何时刻调用setPriority方法改变线程的优先级。优先级为1~10,Thread定义了其中3个常数: (1) MAX-PRIORITY最大优先级(值为10); (2) MIN-PRIORITY最小优先级(值为1); (3) NORM-PRIORITY默认优先级(值为5)。 使用setPriority()方法设置线程当前的优先权
Thread.sleep()方法是使线程停止一段时间的方法。 在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非 (a)“醒来”的线程具有更高的优先级 (b)正在运行的线程因为其它原因而阻塞
join()和yield()区别
join()方法使当前线程停下来等待,直至另一个调用join方法的线程终止。可以带有一个以毫秒为单位的时间值来调用join方法,例如:void join (long timeout);其中join()方法会挂起当前线程。挂起的时间或者为timeout毫秒,或者挂起当前线程直至它所调用的线程终止。
使用Thread.yield()方法能给其它可运行线程一个执行的机会。如果有其它可运行线程存在,则调用Thread.yield()的线程被放入可运行池中,并允许其它线程执行。如果没有其它可运行线程,则yield()方法什么都不做。
注意:调用sleep()方法是给更低的优先权的线程执行的机会;而调用yield()是给其它可运行线程执行的机会。两者是不同的。