线程的休眠

  • Post author:
  • Post category:其他




线程的休眠

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秒才会执行一次,

希望这段代码会加深大家对于线程睡眠的理解吧,还有对于线程的使用,以及线程睡眠的优点都体现出来了。

谢谢观看!



版权声明:本文为qq_42678668原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。