1つのスレッドsleepの場合、他のスレッドは通常通り実行されます.

1434 ワード



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を続けることができることを示しています.
両方を同時に行うことができることを意味します.