プログラミング勉強日記
2020年12月23日
Android StudioでAndroid開発をしていて、音楽を一定時間流してその後一時停止するプログラムを書いたときにThread.sleepを使ったので、その使い方を簡単にまとめる。
スレッドとは
スレッド(Thread)は処理の実行単位の一つで、プログラムの初めから終わりまでの一連の流れのことをいう。スレッドにはシングルスレッドとマルチスレッドがある。
シングルスレッドは、直列処理とも呼ばれている。プログラムの始まりから終わりまでが一本で処理される。
マルチスレッドは、並行処理とも呼ばれている。2つ以上の処理を並行して行う。マルチスレッドを利用するためには、4つのステップが必要である。
- Threadクラスを継承するクラスを作成
- Threadクラスを継承するクラスでrunメソッドを実行する
- Threadクラスを継承するクラスのインスタンスを生成する
- 生成したインスタンスに対してstartメソッドを実行する
sleepメソッドとは
sleepメソッドは、プログラムを一時停止するときに使用する。マルチスレッドで良く用いられる。
sleepメソッドを使用するメリットとしては、マルチスレッドで無限ループを実行していた場合、CPUの負荷が大きくなりパソコンの動作が重くなる要因になる。そういったときに、マルチスレッドの処理中にsleepメソッドを使用して、処理を一時停止すればCPUの負荷を抑えられる。
Thread.sleppの使い方
sleepメソッドを使うにあたってポイントは2つだけ!
- sleepメソッドの引数は、long型を使い、単位はミリ秒(1秒 = 1000ミリ秒)
- sleepメソッドを使うときには必ず例外処理をつける
public class Sample {
public static void main(String[] args) {
try {
// 5秒間一時停止する
Thread.sleep(5000);
} catch(InterruptedException e){
e.printStackTrace();
}
}
}
マルチスレッドでsleepメソッドを実行する
public class ThreadSample {
public static void main(String[] args) {
MultiThread1 mt1 = new MultiThread1();
MultiThread2 mt2 = new MultiThread2();
mt1.start();
mt2.start();
}
}
class MultiThread1 extends Thread {
public void run() {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class MultiThread2 extends Thread {
public void run() {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
参考文献
Javaでプログラムを一時停止、Thread.sleepの使い方と仕組みを解説
【Java入門】Threadをsleepメソッドで一定時間停止する方法