sleep()方法允许指定以毫秒为单位的一段时间作为参数,它使得线程在指定时间内进入阻塞状态,不能得到CPU时间,指定的休眠时间过去之后,线程重新进入可执行状态。
sleep()方法在具体应用时,可能出现一定的偏差。例如sleep(3600000),线程休眠一小时之后返回可执行状态等待,而不是立即执行。因此在实际操作中,如果需要实现类似功能,只使用sleep()方法显然是不行的,因为线程苏醒之后等待CPU再次调度的时间是不可预知的。如果对一个正在sleeping的线程使用Interrupt()方法中断时会抛出一个InterruptedException异常。
(2)使用wait()和notify()方法
wait()和notify()这两种方法通常配套使用,wait()使得线程进入阻塞状态,它有两种形式,一种允许指定以毫秒为单位的一段时间作为参数,另一种没有参数。前者当对应的notify()方法被调用或者超出指定时间时线程重新进入可执行状态,后者必须当对应的notify()方法被调用时生效。
(3)使用yield()方法
yield()方法可以使正在运行的线程放弃当前分得的CPU时间,但是不会使线程阻塞,即线程仍然处于可执行状态,随时可能再次分得CPU时间。调用yield()方法的效果相当于调度程序认为该线程已执行了足够的时间从而转到另一个线程。
(4)使用join()方法
![如何控制线程的暂停核启动 易语言暂停线程](http://img.aihuau.com/images/01111101/01055638t01e36bb3dc5e59a42b.jpg)
join()方法允许指定一个以毫秒为单位的参数,表示等待该线程终止的最长时间,如果没有参数则表示等待该线程执行完毕,再调度其他线程。但是如果另一个线程中断了当前线程,则会抛出InterruptedException异常。