Threadクラス/Runnableインターフェイス
スレッドを実行する – Threadクラス/Runnableインターフェイススレッドを実行するには、Threadクラス(java.langパッケージ)を継承したサブクラスを用意する方法と、Runnableインターフェイス(java.langパッケージ)を実装したサブクラスを用意する方法とがあります。
Threadクラススレッドで処理すべき内容は、Threadクラスのrunメソッドに定義します(ここでは20回メッセージを出力)。定義したスレッドを出力するには、Thread#startメソッドを呼び出します。
ThreadSample.java
package com.example.mynavi.thread; public class ThreadSample { private static class MyThread extends Thread { @Override public void run() { for (int i = 0; i < 20; i++) { System.out.println(i + ":" + this.hashCode()); } } } public static void main(String[] args) { Thread t1 = new MyThread(); Thread t2 = new MyThread(); t1.start(); t2.start(); } }
0:399574838 0:1079632676 1:399574838 1:1079632676 2:1079632676 2:399574838 3:1079632676 4:1079632676 3:399574838 5:1079632676 4:399574838 6:1079632676 5:399574838 7:1079632676 6:399574838 7:399574838 8:1079632676 8:399574838 9:1079632676 9:399574838 10:1079632676 ...後略...
スレッド処理を、Runnableインターフェイスの実装クラスとして定義することもできます。その場合、Runnable実装クラスのインスタンスを引数にThreadクラスをインスタンス化します。
RunableSample.java
package com.example.mynavi.thread; public class RunableSample { private static class MyThread implements Runnable { @Override public void run() { for (int i = 0; i < 20; i++) { System.out.println(i + ":" + this.hashCode()); } } } public static void main(String[] args) { Thread t1 = new Thread(new MyThread()); Thread t2 = new Thread(new MyThread()); t1.start(); t2.start(); } }