全屏

11.3.3 暂停线程执行sleep/yield


【专业IT培训机构,真正零首付入学www.bjsxt.com


      暂停线程执行常用的方法有sleep()和yield()方法,这两个方法的区别是:

      1. sleep()方法:可以让正在运行的线程进入阻塞状态,直到休眠时间满了,进入就绪状态。

      2. yield()方法:可以让正在运行的线程直接进入就绪状态,让出CPU的使用权。

【示例11-4】暂停线程的方法-sleep()

public class TestThreadState {
	public static void main(String[] args) {
		StateThread thread1 = new StateThread();
		thread1.start();
		StateThread thread2 = new StateThread();
		thread2.start();
	}
}
//使用继承方式实现多线程
class StateThread extends Thread {
	public void run() {
		for (int i = 0; i < 100; i++) {
			System.out.println(this.getName() + ":" + i);
			try {
				Thread.sleep(2000);//调用线程的sleep()方法;
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

      执行结果如图11-6所示(注:以下图示只是部分结果,运行时可以感受到每条结果输出之前的延迟,是Thread.sleep(2000)语句在起作用):

图11-6示例11-4运行效果图.png

图11-6示例11-4运行效果图

【示例11-5】暂停线程的方法-yield()

public class TestThreadState {
	public static void main(String[] args) {
		StateThread thread1 = new StateThread();
		thread1.start();
		StateThread thread2 = new StateThread();
		thread2.start();
	}
}
//使用继承方式实现多线程
class StateThread extends Thread {
	public void run() {
		for (int i = 0; i < 100; i++) {
			System.out.println(this.getName() + ":" + i);
		    Thread.yield();//调用线程的yield()方法;
		}
	}
}

      执行结果如图11-7所示(注:以下图示只是部分结果,可以引起线程切换,但运行时没有明显延迟):

图11-7示例11-5运行效果图.png

图11-7示例11-5运行效果图

分类导航
点击按住视频可拖动

缩小

关闭

  • 正在学习
  • 北京总部地址:北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
  • 咨询电话:400-009-1906 010-56233821
  • Copyright 2007-2015 北京尚学堂科技有限公司
  • 京ICP备13018289号-1 京公网安备11010802015183