(1)线程的休眠就类似于单片机中的中断程序。
(2)当我们在某一线程中运用Thread.sleep();方法时,就起到了休眠当前线程的作用,然后转而去运行其他线程,当然该方法时可以传入参数的,传入的参数以毫秒为单位做延时。
(3)我们要注意的是sleep();方法是会抛出异常的,这就需要我们用try,catch.来接受异常。
package cham1;
public class cham1 {
public static void main ( String [ ] args) {
int i= 0 ;
new Thread ( new SleepThread ( ) ) . start ( ) ;
for ( ; i<= 10 ; i++ )
{
System. out. println ( "主线程正在运行:" + i) ;
try {
Thread. sleep ( 2000 ) ;
} catch ( InterruptedException e) { }
}
}
}
class SleepThread implements Runnable {
static int i= 0 ;
public void run ( ) {
for ( ; i<= 10 ; i++ )
{
try {
Thread. sleep ( 1000 ) ;
} catch ( InterruptedException e) { }
System. out. println ( "线程一正在运行:" + i) ;
try {
Thread. sleep ( 1000 ) ;
} catch ( InterruptedException e) { }
}
}
}
该程序以1秒的间隔打印上述文字。
这里要注意的是主线程的sleep参数是SleepThread分线程的参数的二倍,又因为分线程中有两个sleep方法,所以能达到均匀间隔的作用.
我一开始想的是主线程和分线程一样也有两个sleep方法,且设置两个相同的参数。但这样是达不到均匀延时的作用的。它的现象是:
主线程和分线程同时显示1,过1秒后又同时显示2……
这是因为主线程输出语句后的sleep和分线程输出语句前的sleep共同休眠了相同的时间,分线程输出语句后的sleep和主线程输出语句前的sleep共同休眠了相同的时间,才导致这样的现象。