スレッドの一定時間休止

スレッドを一定時間休止するには sleep() メソッドを使用します。
クラスメソッドのためインスタンス化する必要はなく、 Thread.sleep(1000) というように記述します。
第一引数はミリ秒なので、1000を指定した場合、1秒間スレッドを休止します。
ナノ秒まで指定する場合は Thread.sleep(1000,500) というように第二引数でナノ秒を指定します。

sleep()メソッドはInterruptedExceptionをthrowする可能性があるため、try〜catchで囲むなり対処が必要になります。
以下、スレッドクラスの例を見てください。例では1秒ごとに実行中スレッドの名前を出力します。

public class MyThread implements Runnable{
	public void run(){
		for (int i=0;i<10;i++){
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println(Thread.currentThread().getName());
		}
	}
}
以下のTESTクラスでは、上記スレッドクラスをインスタンス化し、二つのスレッドを実行している例です。

public class TEST {
	public static void main(String[] args){
		MyThread thread1 = new MyThread();
		MyThread thread2 = new MyThread();
		
		Thread th = new Thread(thread1);
		th.start();
		th = new Thread(thread2);
		th.setName("スレッド2");
		th.start();
	}
}
上記、Javaアプリケーションを実行すると、1秒ごとにスレッド名が表示され、結果は以下のようになります。

Thread-0
スレッド2
Thread-0
スレッド2
Thread-0
スレッド2
Thread-0
スレッド2
Thread-0
スレッド2
Thread-0
スレッド2
Thread-0
スレッド2
Thread-0
スレッド2
Thread-0
スレッド2
Thread-0
スレッド2

初版2006/08/30 :最終更新2006/08/30
HOME