Javaで匿名クラスを使ってスレッドを作成する方法
スレッド(Thread)とは、プログラムの他の部分と同時に実行できる処理単位のことです。すべてのJavaプログラムには、少なくとも1つの「メインスレッド」が存在します。このメインスレッドは、Java仮想マシン(JVM)がプログラムの起動時にmain()メソッドを呼び出す際に自動的に作成されるものです。
Javaでスレッドを作成する一般的な方法としては、Threadクラスを継承する方法と、Runnableインターフェースを実装する方法の2つがあります。さらに、以下のサンプルコードのように、Threadクラスを明示的に継承したクラスを定義しなくても、匿名クラス(無名クラス)を利用すればその場でスレッドを作成し、実行することができます。
サンプルコード
次の例では、new Thread() の直後に run() メソッドをオーバーライドした匿名クラスを定義し、すぐに start() メソッドを呼び出しています。これにより、別途サブクラスを用意する手間なく、簡潔にスレッドを実装できます。
public class AnonymousThreadTest {
public static void main(String[] args) {
new Thread() {
public void run() {
for (int i=1; i <= 5; i++) {
System.out.println("run() method: " + i);
}
}
}.start();
for (int j=1; j <= 5; j++) {
System.out.println("main() method: " + j);
}
}
}実行結果
実行すると、メインスレッドと新しく作成されたスレッドが並行して動作するため、両方の出力が交互に表示されます。なお、スレッドのスケジューリングはJVMや実行環境に依存するため、出力順序は毎回同じになるとは限りません。
main() method: 1 run() method: 1 main() method: 2 run() method: 2 main() method: 3 run() method: 3 main() method: 4 run() method: 4 main() method: 5 run() method: 5
このように匿名クラスを使えば、一度しか使わない簡単なスレッド処理を、クラス宣言を省略してインラインで記述できます。コードが短くなり可読性も向上するため、小規模なマルチスレッド処理において便利な手法です。
-
Javaで画像を左右反転!ミラーイメージ(鏡像)の作成方法を解説
画像を鏡のように左右反転させた「ミラーイメージ」は、Javaの標準ライブラリである ImageIO と BufferedImage を使えば簡単に作成できます。基本的な仕組みはシンプルで、元画像の各ピクセルを読み取り、その位置を水平方向に反転させて新しい画像へ書き込むだけです。ここでは、その具体的な手順とサンプルコードを紹介します。 ミラーイメージを作成する手順 ImageIO.read() メソッドを使用して、対象となる画像を読み込みます。 読み込んだ画像の高さと幅を取得します。 結果を格納するための空の BufferedImage オブジェクトを作成します。 ネストした for ループを
-
Javaでディレクトリ階層を作成する方法|mkdirs()メソッドの使い方を解説
java.ioパッケージに含まれるFileクラスは、システム上のファイルやディレクトリ(パス名)を表現するためのクラスです。このクラスには、ファイルやディレクトリに対してさまざまな操作を行うためのメソッドが数多く用意されています。 mkdir()メソッドを使用すると、現在のFileオブジェクトが表すパスにディレクトリを1つ作成できます。ただし、このメソッドは親ディレクトリが存在しない場合には失敗するという点に注意が必要です。 ディレクトリ階層を作成するには? 複数階層からなる新しいディレクトリ構造を一括で作成したい場合は、同じFileクラスのmkdirs()メソッドを使用します。このメソッドは