Threadクラス/Runnableインターフェイス
スレッドを実行する – Threadクラス/Runnableインターフェイススレッドを実行するには、Threadクラス(java.langパッケージ)を継承したサブクラスを用意する方法と、Runnableインターフェイス(java.langパッケージ)を実装したサブクラスを用意する方法とがあります。
Threadクラススレッドで処理すべき内容は、Threadクラスのrunメソッドに定義します(ここでは20回メッセージを出力)。定義したスレッドを出力するには、Thread#startメソッドを呼び出します。
ThreadSample.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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(); } } |