JAVA

スレッドを書いてみます

スレッド処理を書いて動かしてみます

[c]
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 );
}
}

}

[/c]

実行した結果は次のようになります。
1回目
[c]
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
[/c]

2回目
[c]
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
[/c]

3回目
[c]
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
[/c]

3回実行した結果を載せたのは、スレッドのスタートタイミングが実行時でそれぞれランダムなので掲載した。

1つのスレッドのみのプログラムの場合は、毎回同じタイミングで同じログが出力されるだけだが、スレッドを利用したプログラムでは、1つ目のプログラムが走る裏でもうひとつのプログラムが走るので、処理が同時に平行してタイミングがまちまちにログが出力されていることがわかります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です