Java线程调度—休眠

线程休眠的方法是Thread.sleep(long millis)Thread.sleep(long millis, int nanos) ,均为静态方法,那调用sleep休眠的哪个线程呢?简单说,哪个线程调用sleep,就休眠哪个线程。

废话先不多说,先上代码看看怎么休眠。

public class Test {

	/**
	 * @param args
	 * java线程调度——休眠
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Thread t=new MyThread();
		Thread t1=new Thread(new MyRunnable());
		t.start();
		t1.start();
	}

}

/*
 * 线程1
 * */
public class MyThread extends Thread {
	@Override
	public void run() {
		for (int i = 0; i < 3; i++) {
			System.out.println("线程1第"+i+"次执行!");
			try {
				Thread.sleep(500);//休眠语句
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

/*
 *线程2 
 */
public class MyRunnable implements Runnable {

	@Override
	public void run() {
		for (int i = 0; i < 3; i++) {
			System.out.println("线程2第"+i+"次执行!");
			try {
				Thread.sleep(500);//休眠语句
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
}

其运行结果是:

//第一次运行结果:

线程1第0次执行!
线程2第0次执行!
线程2第1次执行!
线程1第1次执行!
线程1第2次执行!
线程2第2次执行!

//第二次运行结果:

线程1第0次执行!
线程2第0次执行!
线程2第1次执行!
线程1第1次执行!
线程2第2次执行!
线程1第2次执行!

Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能,提高程序的执行效率。

从这里看出,线程是无法被我们程序员左右的,就算你使用“让步”、“休眠”和“优先级”同时限定,也不一定按照你的意念来执行。

因为线程休眠的目的是使线程让出CPU的最简单的做法之一,线程休眠时候,会将CPU资源交给其他线程,以便能轮换执行,当休

眠一定时间后,线程会苏醒,进入准备状态等待执行。

posted @ 2015-10-30 22:06  浮夸半生『  阅读(240)  评论(0编辑  收藏  举报