Thread.sleep()はメソッドの一つで、Thread(スレッド)を任意の時間だけ停止させることができるもの。
Thread(スレッド)については以下参照。
【Javaプログラミング】Thread(スレッド)とは?使い方や作り方についても-プロショvol.65
今回はThread.sleep()とは何か、その使い方についてまとめた。
Thread.sleep()とは?
Thread.sleep()を使用するとスレッドの実行をミリ秒単位で停止させることができる。
停止させたい時間は()内に数字で記述。
もしも一秒間停止させたかったら(1000)とする。
ただし、スレッドが一時停止されている間にほかのメソッドが割り込んで例外が発生することがある。
⇒try-catchを使用する必要がある。
【Javaプログラミング】Exception 例外処理とは?try…catchの使い方についても-プロショvol.66
Thread.sleep()の注意点
- ()内の数字はマイナスの数字にはできない。
×Thread.sleep(-1000)
- 停止時間には誤差が発生することがある。
Thread.sleep()メソッドによって停止する時間が終了したのち、プログラムが実行されるのを待たないといけない為。 - スリープ状態となっているスレッドにほかのスレッドが割り込むことがある。
InterruptedExceptionという例外を起こす可能性がある。
⇒try-catchと一緒に使用する必要がある
ナノ秒で設定
ナノ秒単位で設定できるメソッド「Thread.sleep(long millis, int nanos)」がある。
その際、ナノ秒は「0から999999」の間で設定可能。
ただし、InterruptedExceptionとIllegalArgumentExceptionという例外を発生させてしまうことがあるためtry-catchと一緒に使用する必要がある。
Thread.sleep()を使用したコード
以下がThread.sleep()を使用して作ってみたコード。
public static void main(String[] args)throws InterruptedException{
System.out.println(“先に表示”);
try {
Thread.sleep(5000);
System.out.println(“遅れて表示”);
}
catch (InterruptedException e){
System.out.println(“割り込み発生”);
}
}
}
実行すると以下の結果が得られる。
遅れて表示
コードの中身
「ThreadSleep」という名前のクラスファイルを作成。
Thread.sleep()は「InterruptedException」という例外を発生させてしまう。
だからメソッド内で起こりうる例外をはじめに定義するためにthrowsを使用して「InterruptedException」を定義。
「System.out.println(“先に表示”);」は問題なく実行される。
tryの中の「Thread.sleep(5000);」をチェックし、例外が発生すればcatch{}内が処理される。
例外が発生しなければ「Thread.sleep(5000);」が処理される。
「5000」は5000ミリ秒待つということ。
5秒のこと。
そして5秒後に「System.out.println(“遅れて表示”);」が処理される。
そのため文字が表示されるのに時差が生じる。
最後に
今回はスレッドの処理の遅らせ方について見てきた。
動きが出てくるからちょっと楽しくなってきた。
簡単なコードで作っているからまだできるけれど、複雑になっていったら果たしてついていけるだろうか・・・。
コメント