`

一个线程sleep时候,其他线程照常运行

 
阅读更多

public class SleepThread extends Thread{

	@Override
	public void run() {
		try {
			System.out.println("sleep start");
			Thread.sleep(10000);
			System.out.println("sleep end");
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


public class WakeThread  extends Thread{

	@Override
	public void run() {
		for(int i=0;i<10;i++){
			try {
				Thread.sleep(1000);
				System.out.println("I am awake");
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
			
		
		 
	}
}


public class ThreadTest {
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Thread t1=new SleepThread();
		Thread t2=new WakeThread();
		t1.start();
		t2.start();
	}

}



打印出
sleep start
I am awake
I am awake
I am awake
I am awake
I am awake
I am awake
I am awake
I am awake
I am awake
I am awake
sleep end


最后一个I am awake 和sleep end 几乎无间隔一起出来了。
这说明sleep的时候,可以自己sleep一会,其他线程走一会,自己再接着sleep.
意味着两则可以同时进行。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics