初心者向けのJava講座です。一緒にJavaを勉強しませんか?
はじめてのJava入門初心者向けのJava講座 |
スレッドの一時停止
前のところでスレッドの作成方法を見てきました。
ここでは、スレッドの一時停止方法について見ていきます。
スレッドを一時停止させるメソッドはThreadクラスのsleep()メソッドを使用します。
このsleep()メソッドはThreadクラスのstaticメソッドです。したがって呼び出し方は
Thread.sleep(待ち時間);のようになります。
また、sleep()メソッドはInterruptedException例外のスローが宣言されており、この例外はRumtimeException系ではないためsleep()メソッドを使用する場合は必ずtry catch文が必要です。
では、早速サンプルプログラムで確認したいと思います。
サンプルプログラム(Sample85.java)
class ThreadSample85 extends Thread{ public void run(){ for(int i = 0 ; i < 5 ; i++){ try{ //1秒間停止させます。 Thread.sleep(1000); System.out.println(i + "回目のスレッドの処理です"); } catch(InterruptedException e){} } } } class Sample85{ public static void main(String args[]){ ThreadSample85 th = new ThreadSample85(); th.start(); for(int j = 0 ; j < 5 ; j++){ System.out.println(j + "回目のmainの処理です"); }
} }
プログラムをコピーする場合すべて選択をクリックしてください。
Sponsored link
コンパイル・実行しています。
コンパイル・実行してみてください。
スレッドが一時停止されているのがわかります。
Thread.sleep(1000) で 引数には停止時間を記述します。
しかしここで使われているのは 1000が1秒停止させるという意味になります。
間違っても1秒停止させたいから ただの1とは記述しないでください。2秒停止させたいときは2000と記述します。
また、必ずtry catch文で例外処理をしなければいけないことに注意してください。ためしにtry catch文を記述しなかった場合のエラーを見てみましょう。
サンプルプログラム(Sample85_1.java)
class ThreadSample85_1 extends Thread{
public void run(){
for(int i = 0 ; i < 5 ; i++){
//1秒間停止させます。
Thread.sleep(1000);
System.out.println(i + "回目のスレッドの処理です");
}
}
}
class Sample85_1{
public static void main(String args[]){
ThreadSample85_1 th = new ThreadSample85_1();
th.start();
for(int j = 0 ; j < 5 ; j++){
System.out.println(j + "回目のmainの処理です");
}
}
}
プログラムをコピーする場合すべて選択をクリックしてください。
Sponsored link
コンパイル・実行します。
このように try catch文を記述しなかったらコンパイルエラーになります。
あくまでもtry catch文でブロックされた処理だけが一時停止します。
次のサンプルプログラムを見てみましょう。
サンプルプログラム(Sample85_2.java)
class ThreadSample85_2 extends Thread{ public void run(){ System.out.println("これは一時停止しません"); System.out.println("これは一時停止しません"); System.out.println("これは一時停止しません"); System.out.println("これは一時停止しません"); System.out.println("これは一時停止しません"); for(int i = 0 ; i < 5 ; i++){ try{ //1秒間停止させます。 Thread.sleep(1000); System.out.println(i + "回目のスレッドの処理です"); } catch(InterruptedException e){} } } } class Sample85_2{ public static void main(String args[]){ ThreadSample85_2 th = new ThreadSample85_2(); th.start(); for(int j = 0 ; j < 5 ; j++){ System.out.println(j + "回目のmainの処理です"); }
} }
プログラムをコピーする場合すべて選択をクリックしてください。
Sponsored link
貴女の空いた時間を有効活用してみませんか?
初心者・中高年の方でも安心なお仕事です。
コンパイル・実行してみます。
try catch文 でブロックされていないとこは一時停止していないのがわかります。
mainメソッド内の処理を一時停止にする
サンプルプログラム(Sample85_3.java)
class ThreadSample85_3 extends Thread{ public void run(){ for(int i = 0 ; i < 5 ; i++){ System.out.println(i + "回目のスレッドの処理です"); } } } class Sample85_3{ public static void main(String args[]){ ThreadSample85_3 th = new ThreadSample85_3(); th.start(); try{ for(int j = 0 ; j < 5 ; j++){ //1秒間停止させます。 Thread.sleep(1000); System.out.println(j + "回目のmainの処理です"); } } catch(InterruptedException e){}
} }
プログラムをコピーする場合すべて選択をクリックしてください。
Sponsored link
スクール・通信講座の徹底比較!一括資料請求【無料】
【必須ソフト14種類がパック!】自宅でプロのWebデザイナーを目指す! デジハリ・オンラインスクール
コンパイル・実行します。
実行してみてください。
mainメソッド内の処理が一時停止しているのがわかります。
ではもう一つ応用としてプログラムを見てみます。
サンプルプログラム(Sample85_4.java)
class ThreadSample85_4 extends Thread{ public void run(){ for(int i = 0 ; i < 5 ; i++){ try{ //2秒間停止させます。 Thread.sleep(2000); System.out.println(i + "回目のスレッドの処理です"); } catch(InterruptedException e){} } } } class Sample85_4{ public static void main(String args[]){ ThreadSample85_4 th = new ThreadSample85_4(); th.start(); try{ for(int j = 0 ; j < 5 ; j++){ //1秒間停止させます。 Thread.sleep(1000); System.out.println(j + "回目のmainの処理です"); } } catch(InterruptedException e){}
} }
プログラムをコピーする場合すべて選択をクリックしてください。
Sponsored link
安心と安全を備えた格安サービス!!
FC2レンタルサーバー>>>
パソコン買ったらまず入れる10のアプリ
コンパイル・実行します。
run()メソッド内では2秒間停止する処理を行いmainメソッド内では1秒間の停止を行なう処理をしています。
このようなことも可能です。