スレッド処理を書いて動かしてみます
package ThreadPackage; public class ThreadTest1 extends Thread { /** * @param args */ public static void main(String[] args) { ThreadTest1 tt = new ThreadTest1(); tt.start(); for(int i=0; i<10; i++){ System.out.println("main:i->" + i); } } public void run() { for (int i=0; i<10; i++) { System.out.println("sub:i->" + i ); } } }
実行した結果は次のようになります。
1回目
sub:i->0 sub:i->1 sub:i->2 sub:i->3 sub:i->4 sub:i->5 main:i->0 sub:i->6 sub:i->7 sub:i->8 sub:i->9 main:i->1 main:i->2 main:i->3 main:i->4 main:i->5 main:i->6 main:i->7 main:i->8 main:i->9
2回目
main:i->0 main:i->1 sub:i->0 sub:i->1 sub:i->2 sub:i->3 main:i->2 main:i->3 sub:i->4 main:i->4 main:i->5 sub:i->5 sub:i->6 sub:i->7 sub:i->8 sub:i->9 main:i->6 main:i->7 main:i->8 main:i->9
3回目
main:i->0 main:i->1 sub:i->0 sub:i->1 sub:i->2 main:i->2 main:i->3 sub:i->3 sub:i->4 sub:i->5 sub:i->6 sub:i->7 sub:i->8 sub:i->9 main:i->4 main:i->5 main:i->6 main:i->7 main:i->8 main:i->9
3回実行した結果を載せたのは、スレッドのスタートタイミングが実行時でそれぞれランダムなので掲載した。
1つのスレッドのみのプログラムの場合は、毎回同じタイミングで同じログが出力されるだけだが、スレッドを利用したプログラムでは、1つ目のプログラムが走る裏でもうひとつのプログラムが走るので、処理が同時に平行してタイミングがまちまちにログが出力されていることがわかります。