线程的休眠
1:线程休眠的概念:
在当前线程的执行中,暂停指定的毫秒数,释放CPU的时间片
2:线程休眠的好处:
没有线程的休眠,我们无法控制多个线程的运行顺序,
当有休眠时,我们可以可控制线程的执行顺序,干涉CUP执行的时间,到达我们想要的目的
3:线程休眠的方法:
线程的休眠:
调用sleep(),sleep需要一个参数用于指定该线程休眠的时间,单位是毫秒,它通常是放在run()方法内的循环被使用
具体方法:
try{
Thread.sleep(休眠时间);
}catch(InterruptedException e)
{
e.printStackTrace();
}
由于使用sleep()方法的执行可能会抛出异常,所以将sleep()方法放在try…catch中,
虽然使用了sleep()方法的线程在一段时间内会醒来,但是并不能保证它醒来后进入运行状态,只能保证他进入就绪状态。
下面我自己写了一段代码表达自己对睡眠的理解:
package lianxi1;
class ch extends Thread
{
public void run()
{
for(int i=0;i<10;i++)
{
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"-->"+i);
}
}
}
class sleep {
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread j=new ch();
j.start();
for(int i=0;i<5;i++)
{
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"-->"+i);
}
}
}
这段代码的意思就是在主线程中对for语句进行休眠,休眠时间为2秒,在覆写run方法也对for
语句进行了休眠操作,休眠时长为4秒,可以看出主线程和调用j.start()的线程执行情况。
执行的结果如下所示:
main-->0
Thread-0-->0
main-->1
main-->2
Thread-0-->1
main-->3
main-->4
Thread-0-->2
//时间间隔4秒
Thread-0-->3
Thread-0-->4
Thread-0-->5
Thread-0-->6
Thread-0-->7
Thread-0-->8
Thread-0-->9
结果分析:因为main线程睡眠时间为j.start()线程的一半可以看出来执行两个main才会执行一个j.start(),
提高了对于cpu的使用效率。j.start()调用的线程每隔4秒才会执行一次,
希望这段代码会加深大家对于线程睡眠的理解吧,还有对于线程的使用,以及线程睡眠的优点都体现出来了。
谢谢观看!